设为首页 加入收藏

TOP

2.2.6 类的继承(3)
2013-10-07 15:20:25 来源: 作者: 【 】 浏览:68
Tags:2.2.6 继承

2.2.6  类的继承(3)

注意程序中以粗体显示的代码。在fish类的构造函数后,加一个冒号(:),然后加上父类的带参数的构造函数。这样,在子类的构造函数被调用时,系统就会去调用父类的带参数的构造函数去构造对象。这种初始化方式,还常用来对类中的常量(const)成员进行初始化,如下面的代码所示:

  1. class point  
  2. {  
  3. public:  
  4.      point():x(0),y(0)  
  5. private:  
  6.      const int x;  
  7.      const int y;  
  8. };  

当然,类中普通的成员变量也可以采取此种方式进行初始化,然而,这就没有必要了。

3.类的继承及类中成员的访问特性

在类中还有另外一种成员访问权限修饰符:protected。下面是public,protected,private三种访问权限的比较:

public定义的成员可以在任何地方被访问。

protected定义的成员只能在该类及其子类中访问。

private定义的成员只能在该类自身中访问。

对于继承,也可以有public、protected或private这三种访问权限去继承基类中的成员,例如,例2-14所示代码中,fish类继承animal类,就是采用public的继承方式。如果在定义派生类时没有指定如何继承访问权限,则默认为private。如果派生类以private访问权限继承基类,则基类中的成员在派生类中都变成了private类型的访问权限。如果派生类以public访问权限继承基类,则基类中的成员在派生类中仍以原来的访问权限在派生类中出现。如果派生类以protected访问权限继承基类,则基类中的public和protected成员在派生类中都变成了protected类型的访问权限。

注意:基类中的private成员不能被派生类访问,因此,private成员不能被派生类所继承。

4.多重继承

如同该名字中所描述的,一个类可以从多个基类中派生。在派生类由多个基类派生的多重继承模式中,基类是用基类表语法成分来说明的,多重继承的语法与单一继承很类似,只需要在声明继承的多个类之间加上逗号来分隔,定义形式如下。

  1. class派生类名:访问权限 基类名称,访问权限 基类名称,访问权限 基类名称  
  2. {  
  3.     ……  
  4. };  

例如B类是由类C和类D派生的,可按如下方式进行说明:
  1. class B:public C, public D  
  2. {  
  3.     ……  
  4. }  

基类的说明顺序一般没有重要的意义,除非在某些情况下要调用构造函数和析构函数时,在这样的情况下,会有一些影响。

由构造函数引起的初始化发生的顺序。如果你的代码依赖于B的D部分要在C部分之前初始化,则此说明顺序将很重要,你可以在继承表中把D类放到C类的前面。初始化是按基类表中的说明顺序进行初始化的。

激活析构函数以做清除工作的顺序。同样,当类的其他部分正在被清除时,如果某些特别部分要保留,则该顺序也很重要。析构函数的调用是按基类表说明顺序的反向进行调用的。

】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇2.2.6 类的继承(4) 下一篇2.2.6 类的继承(2)

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容: