国产探花免费观看_亚洲丰满少妇自慰呻吟_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)介紹專題,或

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 蓬莱市| 福鼎市| 商丘市| 保德县| 平邑县| 鹤岗市| 淮滨县| 卓尼县| 鄯善县| 连州市| 锡林郭勒盟| 芦山县| 吴川市| 离岛区| 双峰县| 全南县| 宣化县| 苍梧县| 桐乡市| 仪陇县| 客服| 洛阳市| 泾阳县| 临洮县| 商南县| 正定县| 建水县| 潮安县| 沈阳市| 肥西县| 新平| 措勤县| 襄城县| 达日县| 田阳县| 柞水县| 成都市| 双峰县| 桦南县| 宝山区| 邯郸市|