亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > C++ > 正文

C++ 的三種訪問權限與三種繼承方式

2020-05-23 13:59:37
字體:
來源:轉載
供稿:網友

三種訪問權限

我們知道C++中的類,有三種訪問權限(也稱作訪問控制),它們分別是public、protected、private。要理解它們其實也很容易,看下面了一個例子。

父類:

class Person{public:Person(const string& name, int age) : m_name(name), m_age(age){}void ShowInfo(){cout << "姓名:" << m_name << endl;cout << "年齡:" << m_age << endl;}protected:string m_name; //姓名private:int m_age; //年齡};class Person{public:Person(const string& name, int age) : m_name(name), m_age(age){}void ShowInfo(){cout << "姓名:" << m_name << endl;cout << "年齡:" << m_age << endl;}protected:string m_name; //姓名private:int m_age; //年齡};

子類:

class Teacher : public Person{public:Teacher(const string& name, int age, const string& title): Person(name, age), m_title(title){}void ShowTeacherInfo(){ShowInfo(); //正確,public屬性子類可見cout << "姓名:" << m_name << endl; //正確,protected屬性子類可見cout << "年齡:" << m_age << endl; //錯誤,private屬性子類不可見cout << "職稱:" << m_title << endl; //正確,本類中可見自己的所有成員}private:string m_title; //職稱};class Teacher : public Person{public:Teacher(const string& name, int age, const string& title): Person(name, age), m_title(title){}void ShowTeacherInfo(){ShowInfo(); //正確,public屬性子類可見cout << "姓名:" << m_name << endl; //正確,protected屬性子類可見cout << "年齡:" << m_age << endl; //錯誤,private屬性子類不可見cout << "職稱:" << m_title << endl; //正確,本類中可見自己的所有成員}private:string m_title; //職稱};

調用方法:

void test(){Person person("張三", 22);person.ShowInfo(); //public屬性,對外部可見cout << person.m_name << endl; //protected屬性,對外部不可見cout << person.m_age << endl; //private屬性,對外部不可見}void test(){Person person("張三", 22);person.ShowInfo(); //public屬性,對外部可見cout << person.m_name << endl; //protected屬性,對外部不可見cout << person.m_age << endl; //private屬性,對外部不可見}

總結

我們對C++類三種方式控制權限總結如下,這與Java中的三種對應的訪問權限是一樣的。

qq%e6%88%aa%e5%9b%be20161104113813

三種繼承方式

C++中繼承的方式還有多種,也分別都用public、protected、private表示。這與Java不一樣,Java只有繼承的概念,默認是public繼承的。

1. 三種繼承方式不影響子類對父類的訪問權限,子類對父類只看父類的訪問控制權。

如下面三種繼承方式都能訪問父類中的public和protected成員。

class Teacher : /*public*/ /*protected*/ private Person{public:Teacher(const string& name, int age, const string& title): Person(name, age), m_title(title){}void ShowTeacherInfo(){ShowInfo(); //正確,public屬性子類可見cout << "姓名:" << m_name << endl; //正確,protected屬性子類可見//cout << "年齡:" << m_age << endl; //錯誤,private屬性子類不可見cout << "職稱:" << m_title << endl; //正確,本類中可見自己的所有成員}private:string m_title; //職稱};class Teacher : /*public*/ /*protected*/ private Person{public:Teacher(const string& name, int age, const string& title): Person(name, age), m_title(title){}void ShowTeacherInfo(){ShowInfo(); //正確,public屬性子類可見cout << "姓名:" << m_name << endl; //正確,protected屬性子類可見//cout << "年齡:" << m_age << endl; //錯誤,private屬性子類不可見cout << "職稱:" << m_title << endl; //正確,本類中可見自己的所有成員}private:string m_title; //職稱};

2. 繼承方式是為了控制子類(也稱派生類)的調用方(也叫用戶)對父類(也稱基類)的訪問權限。

public繼承

class Teacher : public Person{public:Teacher(const string& name, int age, const string& title): Person(name, age), m_title(title){}void ShowTeacherInfo(){ShowInfo(); //正確,public屬性子類可見cout << "職稱:" << m_title << endl; //正確,本類中可見自己的所有成員}private:string m_title; //職稱};class Teacher : public Person{public:Teacher(const string& name, int age, const string& title): Person(name, age), m_title(title){}void ShowTeacherInfo(){ShowInfo(); //正確,public屬性子類可見cout << "職稱:" << m_title << endl; //正確,本類中可見自己的所有成員}private:string m_title; //職稱};void TestPublic(){Teacher teacher("李四", 35, "副教授");teacher.ShowInfo();cout << endl;teacher.ShowTeacherInfo();}void TestPublic(){Teacher teacher("李四", 35, "副教授");teacher.ShowInfo();cout << endl;teacher.ShowTeacherInfo();}

結果:

姓名:李四
年齡:35

姓名:李四
年齡:35
職稱:副教授

private繼承:

class Teacher : private Person{public:Teacher(const string& name, int age, const string& title): Person(name, age), m_title(title){}void ShowTeacherInfo(){ShowInfo(); //正確,public屬性子類可見cout << "職稱:" << m_title << endl; //正確,本類中可見自己的所有成員}private:string m_title; //職稱};class Teacher : private Person{public:Teacher(const string& name, int age, const string& title): Person(name, age), m_title(title){}void ShowTeacherInfo(){ShowInfo(); //正確,public屬性子類可見cout << "職稱:" << m_title << endl; //正確,本類中可見自己的所有成員}private:string m_title; //職稱};void TestPrivate(){Teacher teacher("李四", 35, "副教授");teacher.ShowInfo(); //錯誤,因為Teacher采用了private的繼承方式,外部不可訪問。cout << endl;teacher.ShowTeacherInfo();}void TestPrivate(){Teacher teacher("李四", 35, "副教授");teacher.ShowInfo(); //錯誤,因為Teacher采用了private的繼承方式,外部不可訪問。cout << endl;teacher.ShowTeacherInfo();}

3. public、protected、private三種繼承方式,相當于把父類的public訪問權限在子類中變成了對應的權限。

如protected繼承,把父類中的public成員在本類中變成了protected的訪問控制權限;private繼承,把父類的public成員和protected成員在本類中變成了private訪問控制權。

protected繼承:

class Teacher : protected Person{public:Teacher(const string& name, int age, const string& title): Person(name, age), m_title(title){}void ShowTeacherInfo(){ShowInfo(); //正確,public屬性子類可見cout << "職稱:" << m_title << endl; //正確,本類中可見自己的所有成員}private:string m_title; //職稱};class Teacher : protected Person{public:Teacher(const string& name, int age, const string& title): Person(name, age), m_title(title){}void ShowTeacherInfo(){ShowInfo(); //正確,public屬性子類可見cout << "職稱:" << m_title << endl; //正確,本類中可見自己的所有成員}private:string m_title; //職稱};void TestProtected(){Teacher teacher("李四", 35, "副教授");teacher.ShowInfo(); //錯誤,基類Person的ShowInfo此時對Teacher相當于protected的,外部不可以被訪問cout << endl;teacher.ShowTeacherInfo();}void TestProtected(){Teacher teacher("李四", 35, "副教授");teacher.ShowInfo(); //錯誤,基類Person的ShowInfo此時對Teacher相當于protected的,外部不可以被訪問cout << endl;teacher.ShowTeacherInfo();}class Leader : public Teacher{public:Leader(const string& name, int age, const string& title, string position): Teacher(name, age, title), m_position(position){}void ShowLeaderInfo(){ShowInfo(); //基類Person的ShowInfo此時相當于protected的,但子類仍可以訪問ShowTeacherInfo(); //ShowTeacherInfo仍然是public的,可以訪問cout << m_position << endl;}private:string m_position;};class Leader : public Teacher{public:Leader(const string& name, int age, const string& title, string position): Teacher(name, age, title), m_position(position){}void ShowLeaderInfo(){ShowInfo(); //基類Person的ShowInfo此時相當于protected的,但子類仍可以訪問ShowTeacherInfo(); //ShowTeacherInfo仍然是public的,可以訪問cout << m_position << endl;}private:string m_position;};

以上所述是小編給大家介紹的C++ 的三種訪問權限與三種繼承方式,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回復大家的。在此也非常感謝大家對VEVB武林網網站的支持!


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
97热在线精品视频在线观看| 日韩亚洲欧美中文在线| 韩日欧美一区二区| 亚洲天堂av在线免费| 久久久久久国产精品三级玉女聊斋| 日韩在线欧美在线国产在线| 欧美精品在线免费播放| 中文字幕九色91在线| 亚洲一区二区在线| 色一区av在线| 亚洲老头同性xxxxx| 国产精品va在线播放| 国产欧美一区二区三区在线| 亚洲女同精品视频| 精品香蕉在线观看视频一| 欧美性生交大片免费| 国产精品国产自产拍高清av水多| 国产精品高潮粉嫩av| 久久久久久久久久久人体| 亚洲精品一区av在线播放| 国产成人精品在线观看| 日韩精品在线观| 一区二区三区视频免费| 日韩精品一区二区三区第95| 亚洲国产精品人久久电影| 中文字幕不卡在线视频极品| 国产精品久久久久久亚洲调教| 国产一区二区三区丝袜| 久久99国产精品久久久久久久久| 日本精品久久久久久久| 欧美激情一级二级| 91大神在线播放精品| 91精品国产乱码久久久久久蜜臀| 91丨九色丨国产在线| 亚洲国产女人aaa毛片在线| 911国产网站尤物在线观看| 亚洲国产古装精品网站| 日韩在线高清视频| 国产精品视频精品| 日韩av黄色在线观看| 亚洲国产成人久久| 久久精品国产欧美激情| 日韩精品丝袜在线| 亚洲精品一区二区三区不| 操日韩av在线电影| 欧美成人剧情片在线观看| 国产精品久久久久秋霞鲁丝| 亚洲一区二区三区四区在线播放| 欧美亚洲伦理www| 91av在线免费观看| 91欧美激情另类亚洲| 日韩欧美国产黄色| 高清一区二区三区日本久| 成人免费观看网址| 91精品国产自产在线老师啪| 伊人久久久久久久久久久| 日韩a**站在线观看| 色视频www在线播放国产成人| 欧美国产激情18| 精品福利在线观看| 国产盗摄xxxx视频xxx69| 亚洲精品视频在线观看视频| 有码中文亚洲精品| 亚洲精品国产精品国自产观看浪潮| 国产精品高潮呻吟久久av无限| 日本国产精品视频| 欧美超级免费视 在线| 亚洲二区在线播放视频| 亚洲香蕉av在线一区二区三区| 欧美另类极品videosbestfree| 欧美色播在线播放| 日韩成人在线免费观看| 日韩中文字幕精品| 色哟哟亚洲精品一区二区| 国产精品免费网站| 在线免费观看羞羞视频一区二区| 国产精品吴梦梦| 中文字幕亚洲无线码在线一区| 亚洲精品美女久久| 久久久久久国产| 日韩高清av一区二区三区| 黄色一区二区在线观看| 欧美美女操人视频| 亚洲视频在线免费观看| 久久久久久美女| 欧美在线观看一区二区三区| 成人午夜两性视频| 成人疯狂猛交xxx| 国产成人在线精品| 亚洲日韩欧美视频一区| 日韩欧美aⅴ综合网站发布| 国产在线拍偷自揄拍精品| 亚洲精品98久久久久久中文字幕| 久久国产精品视频| 欧美综合一区第一页| 国内精品久久久久久影视8| 亚洲激情中文字幕| 国产ts人妖一区二区三区| 精品福利在线视频| 国产欧美日韩91| 中文字幕欧美日韩在线| 欧美久久精品午夜青青大伊人| 国产视频综合在线| 国产精品日韩精品| 国产精品一二三视频| 97碰在线观看| 国产精品欧美在线| 欧美一区视频在线| 亚洲视频在线播放| 国产成人午夜视频网址| 久久综合88中文色鬼| 午夜精品福利电影| 久久精品久久久久久国产 免费| 一本大道香蕉久在线播放29| 日韩精品免费观看| 亚洲欧美中文在线视频| 国产亚洲精品高潮| 国产精品成人国产乱一区| 亚洲精品福利视频| 欧美成人在线免费| 91在线观看免费高清| 久久久国产精彩视频美女艺术照福利| 国产69精品久久久| 色综合伊人色综合网站| 亚洲嫩模很污视频| 亚洲色图18p| 成人午夜激情免费视频| 久久久噜噜噜久久久| 国产91在线视频| 中文字幕v亚洲ⅴv天堂| 日韩高清有码在线| 色哟哟网站入口亚洲精品| 欧美中在线观看| 亚洲裸体xxxx| 亚洲欧美国产精品va在线观看| 亚洲欧洲黄色网| 国产深夜精品福利| 亚洲一区免费网站| 亚洲一区二区三区xxx视频| 亚洲精品99999| 国产精品网址在线| 最近2019中文免费高清视频观看www99| 国产精品私拍pans大尺度在线| 亚洲天堂免费视频| 国产精品免费视频xxxx| 亚洲性日韩精品一区二区| 欧美日韩国产丝袜另类| 1769国产精品| 亚洲黄色成人网| 国产91亚洲精品| 欧美激情欧美狂野欧美精品| 久久精品国产69国产精品亚洲| 亚洲国产天堂久久综合| 91中文在线视频| 亚洲国产美女精品久久久久∴| 国产精品麻豆va在线播放| 久久天天躁狠狠躁老女人| 成人网在线免费观看| 国产精品一区二区女厕厕| 国产成人精品视| 97国产成人精品视频| 一区二区在线免费视频| 欧美小视频在线观看| 久久久精品欧美|