友情提示:如果本网页打开太慢或显示不完整,请尝试鼠标右键“刷新”本网页!阅读过程发现任何错误请告诉我们,谢谢!! 报告错误
狗狗书籍 返回本书目录 我的书架 我的书签 TXT全本下载 进入书吧 加入书签

C语言实例教程(PDF格式)-第20章

按键盘上方向键 ← 或 → 可快速上下翻页,按键盘上的 Enter 键可回到本书目录页,按键盘上方向键 ↑ 可回到本页顶部!
————未阅读完?加入书签已便下次继续阅读!




前面的表2。2中已经给出了不同派生方式不区别,为了叙述方 

便,这里将与本节有关的内容重新列于表2。6。  



        表2。 6 不同派生方式得到的派生类对基类成员的访问权限  



    基类成员所使用的      在派生类中基类的继     派生类对基类成员访问 

        关键字           承方式             权限  



    public        public        相当于使用了public关 

    (公有成员)                      键字  



                  protected     相当于使用了 

                                protected关键字  



                  private       相当于使用了private 

                                关键字  



    protected     public        相当于使用了 

    (受保护成员)                     protected关键字  



                  protected     相当于使用了 

                                protected关键字  



                  private       相当于使用了private 

                                关键字  



    private       public        不可访问  

    (私有成员)  

                  protected     不可访问  



                  private       不可访问  



从表2。6可以看出,无论使用哪种方式生成的派生类,其成员 

函数都可以访问基类中除了以private关键进行限定的以外的 

其它成员。但是,对于以public方式生成的派生类,在基类 

中使用public和protected关键字限定的成员,在派生类中仍 

相当于使用了public和protected关键字;对于以protected 

方式生成的派生类,在基类中使用public和protected关键字 

限定的成员,在派生类中都相当于使用了protected关键字; 

而对于以private方式生成的派生类,它们都相当于使用了 

private关键字。  



  n 注意:  


…………………………………………………………Page 88……………………………………………………………

  n 无论使用的是哪种继承方式,在基类中以private关键字 

    进行限定的成员在派生类中都是不可以访问的,这和以 

    protected关键字定义的成员有着很大的 区别,因此,如 

    果希望成员能够为派生类所访问,而同时又不希望被类 

    外部的其它函数直接访问,那么应该使用的访问限定符 

    是protected,而不是private。  



    



2。3。2 多重继承  



前面说过,当一个派生类只有一个基类时,我们称这种继承 

方式为单一继承。事实上,在C++中,我们还允许一个派生类 

具有多于一个的基类,这种派生方式被称为多重继承 

(multiple     inheritance)。多重继承是单一继承的自然扩 

展,两者既有同一性,又有特殊性。图2。6给出了一个多重继 

承的示例。在这个示例中,类Software由两个类 

OperatingSystem和Application派生,而类puter又由类 

Software和另一个类Hardware派生。  



实现该示例的C++语言代码如下:  



                                                 



                    图2。 6 多重继承结构  



#include   



#include   



#include   



class OperatingSystem  



{  



private:  



char OsName'80';  


…………………………………………………………Page 89……………………………………………………………

public:  



const char *GetOsName() const  



{  



return OsName;  



}  



OperatingSystem()  



{  



}  



OperatingSystem(char *OsName)  



{  



strcpy(OperatingSystem::OsName;OsName);  



}  



};  



class Application  



{  



private:  



char *(AppName'80');  



char n;  



public:  



const char *GetAppName(int i) const  



{  



return AppName'i';  



}  



int AddAppName(char *AppName)  



{  



char *NewAppName=new char'80';  


…………………………………………………………Page 90……………………………………………………………

strcpy(NewAppName;AppName);  



Application::AppName'++n'=NewAppName;  



return n;  



}  



int GetAppCount()  



 {  



return n;  



}  



Application()  



 {  



n=0;  



}  



~Application()  



 {  



for (int i=1;i
返回目录 上一页 下一页 回到顶部 0 0
未阅读完?加入书签已便下次继续阅读!
温馨提示: 温看小说的同时发表评论,说出自己的看法和其它小伙伴们分享也不错哦!发表书评还可以获得积分和经验奖励,认真写原创书评 被采纳为精评可以获得大量金币、积分和经验奖励哦!