今日学习:day7部分
多继承
将父类继承爷爷类,改成虚继承,防止儿子在多继承父类,出现爷爷类中的变量会拷贝多份
多态发生的三个必要条件:
1.要有继承
2.要有虚函数重写
3.父类指针或引用指向子类对象 (简单赋值是不行的
多态对于编译器来说是动态联编
如果一个类有virtual虚函数关键字,在编译器给这个对象开辟空间的时候,会默认增加一个指针vptr。vptr指向虚函数表
如果调用一个普通函数,编译器不会查找虚函数表
只有调用的函数,是虚函数的时候,才会去查找虚函数表
vptr分步初始化
在调用父类的构造函数时,会将vptr指针当做父类来处理,此时临时指向父类的虚函数表
将子类对象的空间有编程子类对象处理,vptr指针就从指向父类的表变成指向子类的表