5-3 父子关系
1)先调父类构造,再调子类构造
2)
//子类调用父类的构造函数
Son::Son(int n, int v):Father(n), val(v)
{
val = v;
cout << "子类带参构造" << endl;
}
5-4 菱形继承
使用虚继承,让多个父类只会产生一份成员给子类继承
class A
{
public:
int n;
}
class A_1:: virtual public A //virtual 虚继承,直接对父类虚继承,会产生一个虚指针,所以多出 4Bytes的内存
{
public:
int a1;
};
class A_2:: virtual public A
{
public:
int a2;
};
class AA: public A_1, public A_2
{
public:
int aa;
}
int main()
{
AA obj_aa;
obj_aa.aa;
obj_aa.a1;
obj_aa.a2;
obj_aa.n;
obj_aa.A_1::n;
}
第6章 多态
目的:多态、纯虚函数、实际开发实用多态
内容:联编、多态、纯虚函数、final
6-0:联编
定义:计算机内程序彼此关联的过程
静态联编:早期联编,程序编译阶段,函数实现和函数调用
动态联编:晚期联编,在程序运行时 (多态)
动态联编的条件
1:拥有虚函数成员的父类
2:有继承关系
3:父类类型的指针或引用 指向子类对象