c++ primer plus -- 第13章 笔记...
时间:2010-08-11 来源:cometdlut
类继承
派生类对象包含基类对象。使用公有继承,基类的公有成员将成为派生类的公有成员;基类的私有部分也将成为派生类的一部分,但只能通过基类的公有和保护方法访问。
13.1 需要在继承特性中添加的东西:
(1)派生类需要自己的构造函数;(2)派生类可以根据需要添加额外的数据成员和成员函数。
13.2 构造函数:访问权限的考虑
(1)派生类不能直接访问基类的私有成员,必须通过基类方法进行访问。 (2)派生类构造函数必须使用基类构造函数。(3)创建派生类对象时,程序首先创建基类对象。这意味着基类对象应当在程序进入派生类构造函数之前被创建。 C++使用成员初始化列表来完成这个工作。
一般情况下,都是基类对象首先被创建,如果不调用基类构造函数,程序将使用默认的基类构造函数。
13.3 有关派生类构造函数的要点:
(1)基类对象首先被创建;
(2)派生类构造函数应通过成员初始化列表将基类信息传递给基类构造函数。
(3)派生类构造函数应初始化派生类新增的数据成员。
注意:释放对象的顺序与创建对象的顺序正好相反,即首先执行派生类的析构函数,然后自动调用基类的析构函数。
13.4 派生类和基类之间的特殊关系
(1)基类指针可以在不进行显式类型转换的情况下指向派生类对象;基类引用可以在不显式类型转换的情况下引用派生类对象。
(2)基类指针或引用只能用于调用基类方法。
13.5 继承--is a 关系
公有继承是最常用的一种方式,它建立一种is-a关系,即派生类对象也是基类对象,可以对基类对象执行的任何操作,也可以对派生类对象执行。继承可以在基类的基础上添加属性,但不能删除基类的属性。
13.6 多态公有继承
使用Virtual,在进行多态继承的时候,如果方法是通过引用或指针而不是对象调用的,它将确定使用那种方法。如果没有使用关键字Virtual,程序将根据引用类型或指针类型选择方法;如果使用了Virtual,程序将根据引用或指针指向的对象的类型来选择方法。
一般情况下会在基类中将派生类会重新定义的方法声明为虚方法。方法在基类中被声明为虚拟的后,它在派生类中将自动成为虚方法。一般在派生类中也用Virtual来指出那些函数是虚函数。