|
C++类的继承
C++类的继承特性总结
* 任何具有公有(或受保护的)构造函数和析构函数的C++结构或类都可以有派生类。
* 如果没有提供访问说明符,编译器就假定访问是私有的,除非基类是一个结构(这时,编译器假定访问是公有的)。
* 除非基类有默认的构造函数(即不带参数的构造函数),否则必须提供基类的参数初始化表。
* 从数组返回的字符串是const char型的(如不要用函数返回数组字符串,而函数的返回类型为字符指针型)。
* 类机制的特性罗列清单:
1. 公有(public)继承父类各成员保持原有属性传递给子类;私有(privated)类继承父类可继承成员及函数都成为子类私有对象。
2. 子类通过:域访问控制符)访问父类资源。
3. 从同一个父类继承的任意多个子类之间没有任何关系。
4. 在类中需要常量数据时,可以用enum定义。
5.虚函数如不在子类中改写则沿用父类特性;纯虚函数如不在子类中改写则子类也无法实例化。
6. 虚函数的设置可以让指针性变量正确使用函数;基类析构函数应该都设置成虚函数以方便类对象的回收。
7. 子类继承了父类的所有公用成员和保护成员(成员函数不占空间),同时还加了一张虚拟函数表(virtual table)。
8. 多重继承时父类构造函数的执行顺序取决与子类中申明父类的顺序;如果类定义中包含另一个类的对象,则构造函数的执行情况是父类先执行,然后是包含对象类构造函数,最后才是子类本身。
例子:class Son : public father1, public father2
{
otherClass otherClassdata;
........................................
........................................
}
构造函数执行顺序: father1,father2,otherClass,Son
析构函数执行顺序: Son,otherClass, father2,father1
9. 构造函数带参数的类不能是虚基类;指向虚基类的指针不能被强制转换成类层次结构中该类下的类型(类层次结构中某个虚基类的出现只共享一次)。
multiple inheritance(多继承)时数据的重复加载引发的错误的解决方案;
1.让子类的父类的继承方式为虚继承;
2.让一个子类的父类为私有继承 另一个为共有继承。。。 |
|