77 有哪些不能自动继承的成员函数
构造函数,析构函数,拷贝构造函数,析构函数。
78 C++中接口继承与实现继承的区别
非虚函数:强制实现继承
虚函数:可视继承
纯虚函数:接口继承
79 基类与派生类之间转换的情况
a) 对象的转换:
1,派生类对象到基类对象的转换: 在用户代码中,只有公有继承时可以转换。在派生类成员函数中,均可进行转换。
2,基类对象到派生类对象不可转换。
b) 指针或引用的转换
1, 派生类指针或者引用到基类的指针或者引用的转换:
在用户代码中,只有公有继承时可以进行转换。
在派生类成员函数中,均可进行转换。
2, 基类指针或引用到派生类指针或者引用的转换(一般是无意义的)
在用户代码或者派生类成员函数代码中,可用static_cast或dynamic_cast或reinterpret_cast进行转换,其中dynamic_cast只有在基类中有定义虚函数时才能通过。
80 多继承和多重继承的区别
多继承是指一个子类继承多个父类,多继承对父类的个数没有限制,继承方式可以是公有继承,保护继承,和私有继承。不写继承方式默认私有继承。
多重继承和多继承不同,当B类从A类派生,C类从B类派生,此时称为多重继承。
当实例化子类的时候,会首先依次调用所有基类的构造函数,最后调用该子类的构造函数。销毁该子类时,则相反。无论继承的有多少层,只要他们保持直接或者间接的继承关系。那么子类都可以与其直接或间接父类构成is a的关系。