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

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

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

2020-01-26 14:23:57
字體:
來源:轉載
供稿:網友

三種訪問權限

我們知道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++ 的三種訪問權限與三種繼承方式,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回復大家的。在此也非常感謝大家對武林網網站的支持!

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
日韩毛片中文字幕| 国产精品免费电影| 国产69精品久久久久9999| 久久久久久久久综合| 综合国产在线观看| 欧美精品videosex性欧美| 国产91热爆ts人妖在线| www.亚洲人.com| 日本精品一区二区三区在线播放视频| 欧美成人亚洲成人日韩成人| 亚洲视频自拍偷拍| 精品偷拍一区二区三区在线看| 久久久久成人网| 7777精品久久久久久| 久久久成人的性感天堂| 亚洲网在线观看| 懂色av影视一区二区三区| 亚洲精品乱码久久久久久按摩观| 国产精品午夜一区二区欲梦| 中文字幕一区二区三区电影| 日韩精品视频免费| 91亚洲精品在线| 国产日韩换脸av一区在线观看| 在线播放日韩欧美| 日韩中文在线中文网三级| 精品国产精品自拍| 亚洲国模精品一区| 亚洲一区中文字幕| 日韩av电影手机在线| 成人激情在线播放| 午夜美女久久久久爽久久| 日韩最新免费不卡| 欧美乱大交xxxxx| 秋霞av国产精品一区| 久久精品国产亚洲精品| 久久九九国产精品怡红院| 日韩免费观看在线观看| 日韩高清电影免费观看完整| 色yeye香蕉凹凸一区二区av| 久久久久久久久久久成人| 中文字幕在线看视频国产欧美| 啪一啪鲁一鲁2019在线视频| 国产在线精品成人一区二区三区| 性欧美亚洲xxxx乳在线观看| 精品一区二区三区四区在线| 欧美黑人一级爽快片淫片高清| 中文字幕亚洲欧美日韩高清| 国产91在线高潮白浆在线观看| 91色视频在线导航| 国产婷婷色综合av蜜臀av| 亚洲一区中文字幕在线观看| 成人午夜在线视频一区| 亚洲精品视频中文字幕| 神马久久久久久| 亚洲性日韩精品一区二区| 在线播放国产一区中文字幕剧情欧美| 精品国偷自产在线视频| 亚洲国产精品va在线看黑人动漫| 日韩av在线一区| 欧美国产高跟鞋裸体秀xxxhd| 欧美国产视频日韩| 性色av香蕉一区二区| 日韩hd视频在线观看| 欧美午夜xxx| 国产精品高清在线| 国产专区精品视频| 日韩在线观看电影| 久久av红桃一区二区小说| 国产亚洲精品久久久久久777| 九九精品在线观看| 美女扒开尿口让男人操亚洲视频网站| 亚洲精品久久久久久久久久久久久| 中文字幕日韩精品在线| 精品亚洲夜色av98在线观看| 欧美精品videosex极品1| 欧美激情一区二区久久久| 在线观看亚洲视频| 欧美精品18videosex性欧美| 亚洲成人激情小说| 国产精品老女人精品视频| 97视频在线看| 国产精品久久久久999| 亚洲男人第一网站| 亚洲最大的成人网| 久久久久久久一区二区| 国产精品久久久久久久久免费看| 久久亚洲精品国产亚洲老地址| 久热精品在线视频| 久久亚洲国产成人| 国产一区二区在线免费视频| 亚洲一区二区三区视频播放| 欧美在线视频免费观看| 亚洲精品久久久一区二区三区| 亚洲欧洲av一区二区| 7777免费精品视频| 久久精品久久久久电影| 美女撒尿一区二区三区| 国产成人精品久久| 欧美日韩亚洲精品一区二区三区| 亚洲香蕉在线观看| 91在线免费视频| 日韩亚洲综合在线| 北条麻妃一区二区在线观看| www.亚洲一二| 欧美性猛交xxx| 欧美疯狂做受xxxx高潮| 精品国产精品三级精品av网址| 亚洲精选在线观看| 国产免费亚洲高清| 成人欧美一区二区三区黑人孕妇| 亚洲成人久久久| 精品一区二区三区三区| 久久av在线看| 欧美xxxx做受欧美.88| 亚洲成人黄色在线观看| 91网站在线看| 91成品人片a无限观看| 欧美日韩国产一区中文午夜| 国产亚洲欧美日韩美女| 国产成人福利视频| 欧美精品18videosex性欧美| 久久久之久亚州精品露出| 欧美性生活大片免费观看网址| 久久深夜福利免费观看| 亚洲bt天天射| 亚洲在线一区二区| 欧美中文字幕在线播放| 久久久久久亚洲精品中文字幕| 亚洲娇小xxxx欧美娇小| 久久人人爽人人爽人人片av高清| 国产精品高潮呻吟久久av野狼| 亚洲人成人99网站| 久久久久久美女| 68精品国产免费久久久久久婷婷| 尤物yw午夜国产精品视频明星| 欧美一级淫片丝袜脚交| 日韩欧美在线观看| 欧美性jizz18性欧美| 亚洲免费福利视频| 亚洲精品mp4| 在线性视频日韩欧美| 国产xxx69麻豆国语对白| 91夜夜揉人人捏人人添红杏| 91久久久久久久| 亚洲综合在线中文字幕| 欧美性受xxxx白人性爽| 日韩中文字幕国产| 欧美一级淫片播放口| 成人午夜在线影院| 国产精品久久久久久久久久久久久久| 主播福利视频一区| 亚洲成色777777在线观看影院| 97视频在线观看播放| 亚洲精品国产拍免费91在线| 亚洲综合社区网| 久久综合久久八八| 欧美电影在线免费观看网站| 亚洲аv电影天堂网| 国内精品中文字幕| 国产精品美女午夜av| 亚洲色图av在线| 欧美激情按摩在线| 欧美国产视频一区二区| 久青草国产97香蕉在线视频|