genli

导航

C++ 继承与派生

继承:
保持已有类的特性而构造新类的过程。

派生:
在已有类的基础上新增自己的特性而产生新类的过程称为派生。被继承的已有类称为基类(或父类),派生出的新类称为派生类。

继承的目的:
实现代码重用。

派生的目的:
当新的问题出现,原有程序无法解决(或不能完全解决)时,需要对原有程序进行改造。

不同继承方式的影响主要体现在:
1,派生类成员对基类成员的访问控制。
2,派生类对象对基类成员的访问控制。

三种继承方式:
1,公有继承。
2,私有继承。
3,保护继承。

公有继承:
基类的public和protect成员的访问属性在派生类中保持不变,但基类的private不可访问
派生类中的成员函数可以直接访问基类中的public和protected成员,但不能访问基类的private成员。
通过派生类的对象只能访问基类的public成员。

私有继承:
基类的Public和protected成员都以private身份出现在派生类中,但基类的private成员不可访问。
派生类中的成员函数可以直接访问基类中的public和基类的protected成员,但不能访问基类的private成员。
通过派生类的对象不能访问基类中的任何成员。

保护继承:
基类的public和pretected成员都以protected身份出现在派生类中,但基类的private成员不可访问。
派生类中的成员函数可以直接访问基类中的public和protected成员,但不能访问基类中的private成员。
通过派生类的对象不能访问基类中的任何成员。

基类与派生类的关系:
单继承:派生类只从一个基类派生。
多继承:派生类从多个基类派生。
多重派生:由一个基类派生出多个不同的派生类。
多层逃生:派生类又作基类,继续派生新的类。

继承时的构造函数:
基类的构造函数不被继承,需要在派生类中自行声明。
声明构造函数时,只需要对本类中新增的成员进行初始化,对继承来的基类成员的初始化由基类完成。

派生类与基类的构造函数:
1,当基类中声明有缺省形式的构造函数或未声明构造函数时,派生类构造函数的声明中可以省略对基类构造函数的调用。
2,若基类中未声明构造函数,派生类中也可以不声明,全采用缺省形式构造函数。
3,当基类声明有带形参的构造函数时,派生类也应声明带形参的构造函数,提供将参数传递给基类构造函数的途径。

继承时的析构函数:
1,析构函数也不被继承,派生类自行声明。
2,声明方法与一般(无继承关系时)类的析构函数相同。
3,不需要显式地调用基类的析构函数,系统会自动隐式调用。
4,析构函数的调用次序与构造函数相反。

同名覆盖原则:
当派生类与基类中有相同成员时,若未强行指名,则通过派生类对象使用的是派生类中的同名成员;如要通过派生类对象访问基类中被覆盖的同名成员, 应使用基类名限定。

 

posted on 2011-11-23 01:02  genli  阅读(310)  评论(0)    收藏  举报