五:继承和派生
5.1:继承的三种方式
继承:公有继承,私有继承,派生继承
访问规则:
私有成员:基类中的私有成员,无论哪一种方式继承在子类都不能直接访问。
公有成员:基类公有成员被 public 继承 属性仍然是 public , private 继承,属性为private, 保护继承为 protected
保护成员:公有继承 protected , 私有继承 private , 保护继承 protected
5.2:派生类的构造函数和析构函数
派生类的构造函数:必须对基类构造函数也进行初始化。
class B:public A
{
public:
B( int a1, int b1 ):A(a),b(b1){}
}
5.3:多重继承和虚基类
声明:
class A:public B , private C ,protected D{
//同样要初始化
}
多重继承构造函数,析构函数逇调用顺序:先调用基类的构造函数,在调用对象成员的构造函数,最后调用派生类构造函数,
同一层次各个基类构造函数调用顺讯取决于声明继承的顺序。析构函数的调用与构造函数相反。
虚基类:目的是为了解决二义性
A同时继承了B类和C类,B 类和 C类都是都是继承D类,A类同时从B类和C类继承了D类数据成员,这样继承了2遍,为了解决这个问题用虚继承。
clas B: virtual public D{
}
clas C: virtual public D{
}
class A:public B , public C{
}