赞
踩
从一个类派生出另一个类,原先的类称为基类,继承类称为派生类。
派生类的定义方式:
class 派生类类名: 访问权限修饰符 基类类名1, 访问权限修饰符 基类类名2, ...
{
//成员列表
}
例子:
class Base1
{
//...
};
class Base2
{
//...
};
class Derived: public Base1, protected Base2
{
//...
};
用公有继承的派生类对象名调用成员函数:
构造一个派生类包括以下3部分工作:
1)从基类接受成员
派生类把基类全部的成员(不包括构造函数和析构函数)接收过来,也就是说是没有选择的,不能选择接受其中一部分成员,而舍弃另一部分成员。
要求我们根据派生类的需要慎重选择基类,使冗余量最小。事实上,有些类是专门作为基类而设计的,在设计时充分考虑到派生类的要求。
2)调整从基类接收的成员
接收基类成员是程序人员不能选择的,但是程序人员可以对这些成员作某些调整。
3)在声明派生类时增加的成员
这部分内容时很重要的,它体现了派生类对基类功能的扩展。
此外,在声明派生类时,一般还应当自己定义派生类的构造函数和析构函数,因为构造函数和析构函数是不能从基类继承来的。
1. 派生类对象的成员组成:
-从基类继承过来的继承成员
-新加入的成员
2. 派生类构造函数构成:
-调用基类构造函数,对继承成员进行初始化
-按常规方法对新加入的数据成员初始化
3. 派生类构造函数的执行:
-先调用基类的构造函数对继承成员进行初始化
-再执行对新加成员初始化的部分。
4.若基类构造函数带有参数,定义派生类构造函数时必须在初始化列表中显示调用基类构造函数,并用在派生类构造函数的形参部分为基类构造函数提供实参。
-即便派生类本身的构造函数不带参数也必须在冒号后调用基类的构造函数,但这是传递给基类构造函数的实参通常时一些常量表达式。
5.若基类构造函数不带参数,定义派生类构造函数时,可以不必显示的调用基类构造函数(C++编译程序认为已自动调用了基类中形式参数列表为空的构造函数。无参数的构造函数可以是C++程序自动产生的,也可以是程序员自己声明/定义的)。
派生类构造函数一般的定义格式为:
派生类名::派生类名(基类所需形参,派生类成员所需形参,对象成员形参):基类名(基类的参数),<对象成员名>(对象成员的参数)
{
派生类成员初始化赋值语句;
}
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。