国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發設計 > 正文

C++類的繼承與多重繼承的訪問控制

2019-11-17 05:05:10
字體:
來源:轉載
供稿:網友
  在前面的練習中我們一直在使用public的繼續方式,即共有繼續方式,對于PRotected和private繼續方式,即保護繼續與私有繼續方式我們并沒有討論。
  對于單個類來說,討論保護繼續與私有繼續的區別意義是不大的,他們的區別只在多級繼續的情況中體現。

  在這里我聲明一下,對于此章節的內容不太適合用過多的文字進行描述,主要還是看例子,通過例子熟悉之間的關系,過多的文字描述會模糊讀者思路。   例程如下(重要部分都做了具體說明): //程序作者:管寧   
//站點:www.cndev-lab.com   
//所有稿件均有版權,如要轉載,請務必聞名出處和作者   
 
#include <iostream> 
using namespace std; 
 
class Base 

    public://公有的 
        int a1; 
        virtual void test() = 0; 
    protected://受保護的 
        int a2; 
    private://私有的 
        int a3; 
}; 
//------------------------------------------------------------------------------ 
class ProtectedClass:protected Base//保護繼續 

    public: 
        void test() 
        { 
            a1 = 1;//a1在這里被轉變為protected 
            a2 = 2;//a2在這里被轉變為protected 
            //a3=3;//錯誤,派生類不能訪問基類的私有成員 
        } 
}; 
class ControlProtectedClass:public ProtectedClass//以public方式繼續ProtectedClass類 

    public: 
        void test() 
        { 
            a1 = 1;//a1在這里仍然保持為a1在這里被轉變為protected 
            a2 = 2;//a2在這里仍然保持為a1在這里被轉變為protected 
            //a3=3;//錯誤,由于Base類成員為私有的,即使是上級父類是保護繼續,也不能改變Base類成員的控制類型 
        } 
}; 
//------------------------------------------------------------------------------ 

class PrivateClass:private Base//私有繼續 

    public: 
        void test() 
        { 
            a1 = 1;//a1在這里被轉變為private 
            a2 = 2;//a2在這里被轉變為private 
            //a3=3;//錯誤,基類私有成員對文件區域與派生類區域都是不可訪問的 
        } 
}; 
class ControlPrivateClass:public PrivateClass//以public方式繼續PrivateClass類 

    public: 
        void test() 
        { 
            //a1=1;//錯誤,由于基類PrivateClass為私有繼續,a1已經轉變為private 
            //a2=2;//錯誤,由于基類PrivateClass為私有繼續,a1已經轉變為private 
            //a3=3;//錯誤,由于Base類成員為私有的,PrivateClass類也為私有繼續 
        } 
}; 
//------------------------------------------------------------------------------ 
class PublicClass:public Base//共有繼續有區別與其它方式的繼續,繼續后的各成員不會其改變控制方式 

    public: 
        void test() 
        { 
            a1 = 1;//a1仍然保持public 
            a2 = 2;//a2仍然保持protected 
            //a3=3;//錯誤,派生類不能操作基類的私有成員 
        } 
}; 
class ControlPublicClass:public PublicClass//以public方式繼續PublicClass類 

    public: 
        void test() 
        { 
            a1 = 1;//a1仍然保持public 
            a2 = 2;//a2仍然保持protected 
            //a3=3;//錯誤,由于Base類成員為私有成員,即使是上級父類是公有繼續,也不能改變Base類成員的控制類型 
        } 
}; 
//------------------------------------------------------------------------------ 

int main() 

    system("pause");  
}  認真看完了例子,相信細心的讀者對于共有繼續、保護繼續與私有繼續的區別與特點已經了解,最后再提醒一下讀者,在繼續關系中,基類的private成員不但對應用程序隱藏,即使是派生類也是隱藏不可訪問的,而基類的保護成員只對應用程序隱藏,對于派生類來說是不隱藏的,保護繼續與私有繼續在實際編程工作中使用是極其少見的,他們只在技術理論上有意義。 更多文章 更多內容請看C/C++技術專題  訪問控制列表  訪問控制列表(ACL)介紹專題,或

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 馆陶县| 湖南省| 泸溪县| 平乐县| 敖汉旗| 洪泽县| 陵水| 临安市| 盘锦市| 淮滨县| 甘洛县| 咸宁市| 汤原县| 区。| 衡阳县| 包头市| 富民县| 册亨县| 丹凤县| 山丹县| 夏河县| 新密市| 禹州市| 云安县| 志丹县| 合阳县| 固始县| 秦皇岛市| 台东市| 江阴市| 十堰市| 永新县| 海兴县| 正阳县| 沿河| 桓台县| 江川县| 双流县| 鞍山市| 余庆县| 罗平县|