多继承与虚函数
多继承:
类中Protected属性是指该类中的成员函数可以访问protected属性的数据成员,但类对象不可以访问。而public属性的数据成员,类的成员函数和类对象都可以访问。
(1)公有继承:
(2)私有继承
(2)保护继承
菱形继承问题:当B、C有共同的基类A派生而来,而类D又继承B和C,这时B,C是D的直接基类,A为D的间接基类。此时会产生一个问题,当D继承B和C时,A有多份拷贝,这时会浪费内存空间,而且当类D访问A中的函数成员时,不知道访问的是有B继承的还是C继承的,此时可以将他们的共同基类设置为虚基类来解决二义性问题。
● 哪些函数不能为虚函数?
构造函数、普通函数(不是成员函数)、静态成员函数、友元函数。
● 虚函数的访问。
(1)通过对象名访问虚函数时调用哪个类的函数取决于定义对象名的类型。对象类型是基类时,就调用基类的函数;对象类型是子类时,就调用子类的函数。
(2)使用指针访问非虚函数时,编译器根据指针本身的类型决定要调用哪个函数。
(3)使用指针访问虚函数时,编译器根据指针所指对象的类型决定要调用哪个函数。
(4)使用引用访问虚函数,与使用指针访问虚函数类似,不同的是,引用一经声明后,引用变量本身无论如何改变,其调用的函数就不会在改变,始终指向开始定义时的函数。