系列文章目录
提示:这里可以添加系列文章的所有文章的目录,目录需要自己手动添加
例如:派生类,一个派生类的诞生
提示:写完文章后,目录可以自动生成,如何生成可参考右边的帮助文档
文章目录
前言
提示:这里可以添加本文要记录的大概内容:
例如:随着人工智能的不断发展,机器学习这门技术也越来越重要,很多人都开启了学习机器学习,本文就介绍了机器学习的基础内容。
提示:以下是本篇文章正文内容,下面案例可供参考
一、派生类对象的特征:
1,派生类对象存储了基类的数据成员(派生类继承了基类的实现)
2,派生类对象可以使用基类方法(派生类继承了基类的接口)
3,派生类需要自己的构造函数
4,配三类可以根据需要添加额外的数据成员和成员函数
二、构造函数:访问权限的考虑
派生类不能直接访问基类的私有成员,而必须通过基类方法进行访问。例如,RatedPlayer 构造函数不能直接设置继承的成员(firstname、lastname和 hasTable),而必须使用基类的公有方法来访问私有的基类成员。具体地说,派生类构造函数必须使用基类构造函数。
创建派生类对象时,程序首先创建基类对象。从概念上说,这意味着基类对象应当在程序进入派生类构造函数之前被创建。C++使用成员初始化列表语法来完成这种工作。例如,下面是第一个RatedPlayer 构造函数的代码:
Ratedplayer::Ratedplayer(unsigned int r,const string & fn,const string&ln,bool ht):TableTennisplayer(fn,In,ht)
{
rating =r;
}
其中:TableTennisplayer(fn,1n,ht)是成员初始化列表。它是可执行的代码,调用TableTennisPlayer构造函数。例如,假设程序包含如下声明:Ratedplayer rplayer1(1140,“Mallory”,“Duck”,true);
则 RealPlayer 构造函数将把实参“Mallory”、“Duck”和 true 赋给形参 、In 和 ht,然后将这些参数作为实参传递给 TableTennisPlayer 构造函数,后者将创建一个嵌套TableTennisPlayer对象,并将数据“Mallory”、“Duck”和 true 存储在该对象中。然后,程序进入RealPlayer构造函数体,完成 RealPlayer 对象的创建,并将参数r的值(即1140)赋给rating成员(参见图13.2)。
1.有关派生类构造函数的要点如下
- 首先创建基类对象;
- 派生类构造函数应通过成员初始化列表将基类信息传递给基类构造函数:
- 派生类构造函数应初始化派生类新增的数据成员。
这个例子没有提供显式构造函数,因此将使用隐式构造函数。释放对象的顺序与创建对象的顺序相反,即首先执行派生类的析构函数,然后自动调用基类的析构函数。
注意:
:创建派生类对象时,程序首先调用基类构造函数,然后再调用派生类构造函数。基类构造函数负责初始化继承的数据成员;派生类构造函数主要用于初始化新增的数据成员。派生类的构造函数总是调用一个基类构造函数。可以使用初始化器列表语法指明要使用的基类构造函数,否则将使用默认的基类构造函数。
派生类对象过期时,程序将首先调用派生类析构函数,然后再调用基类析构函数。
成员初始化列表
派生类构造函数可以使用初始化器列表机制将值传递给基类构造函数。请看下面的例子:
该处使用的url网络请求的数据。
总结
1,这里只是简单的继承基础。
2,这里一定要熟练。
3,后面会逐渐增加难度。
646

被折叠的 条评论
为什么被折叠?



