C++基础之继承类和派生类

(1)继承是创建一个具有某个类的属性和行为的新类的能力。原有的类称为基类,新创建的类称为派生类。派生类将基类中的所有成员作为自己的成员,同时派生类本身可以定义新的成员
(2)派生类只有一个基类的继承称单重继承,简称单继承。派生类具有两个或两个以上的基类的继承称为多重继承,简称多继承。C++语言支持单继承,又支多继承
(3)派生类有3种继承方式:公有继承( public)、私有继承( private)和保护继承( protected)。不同的继承方法中,基类成员在派生类中的访问权限是不同的。3种继承方式中,基类的私有成员在派生类中都是不可见的。公有继承时,基类中公有成员和保护成员在派生类中仍然是公有成员和保护成员;私有继承时,基类中公有成员和保护成员在派生类中都是私有成员;保护继承时,基类中公有成员和保护成员在派生类中都是保护成员
(4)构造函数不能够继承。因此,派生类的构造函数必须通过调用基类的构造函数来初始化基类的对象。派生类构造函数格式如下
<派生类名>(<派生类构造函数总参数表>):<基类构造函数名>(<参数表1>),…,<子对象名>(<参数表n>)
{
<派生类中数据成员初始化>
}
其中,<派生类名>即为派生类的构造函数名
派生类的构造函数中应包含基类构造函数,子对象类构造函数以及派生类本身构造函数
如果派生类中有默认构造函数,则该默认构造函数将自动包含有基类的默认构造函数
(5)一个特定的类型,当且仅当它至少提供了另一个类型的行为时,则称该类型是另个类型的子类型。这是类型之间的特殊和一般的关系。在公有继承方式下,派生类是基类的子类型,反之不然
6)赋值兼容规则如下
①派生类对象可以赋给基类对象;
②派生类对象可以初始化基类对象的引用;
派生类对象的地址值可赋给指向基类对象的指针。
上述规则的基础是派生类是基类的子类型。
(7)多继承的构造函数的成员初始值表中要包含多个基类的构造函数。对多个基类的构造函数的执行顺序取决于定义多继承时,派生类名后面给定的多个基类名的顺序
(8)多继承通常会在下述两种情况下出现二义性:
①访问不同基类中的相同成员时,可能出现二义性
②访问共同基类中的成员时,可能出现二义性。
避免二义性的方法通常使用成员名限定法。
(9)虚基类是消除公共基类引起二义性的最好方法。说明虚基类的关键字是virtual
其格式如下
class<派生类名>: virtual<继承方式><基类名>
(10)虚基类的间接派生类的构造函数的成员初始值表中要含有公共基类的构造函数,这时虚基类构造函数优先执行,并且仅被执行一次

(11)当对象被删除时,派生类的析构函数被执行,由于析构函数也不能被继承,先执行派生类的析构函数,在执行基类的析构函数,顺序与执行构造函数相反

猜你喜欢

转载自www.cnblogs.com/lovehelenmore/p/10808588.html