#include<iostream>#include<string>using namespace std;class Person{PRotected: string name;private: int age;public: //常量引用不可以通過函數修改實參,也就是說名字是確定的,不會被改變 Person(const string& con_name,int con_age) :name(con_name),age(con_age){} void show() { //基類成員函數可以訪問public、protected、private成員 cout << name << endl; cout << age << endl; }}; //三種繼承方式不影響子類對父類的訪問權限,子類對父類的訪問權限只看父類的訪問控制權class Teacher :/*public*/ /*protected*/ private Person{private: string title;public: Teacher(const string& con_name,int con_age,const string& con_title) :Person(con_name,con_age),title(con_title){} void showteacher() { show(); //子類調用公有制成員函數 cout << name << endl; //cout << age << endl; age在基類中是私有成員,子類不可以訪問 基類受保護成員可以被子類成員函數訪問 cout << title << endl; }};int main(){ string name = "盧憲"; //string name={"盧憲"}; //Person physicist(name, 63); Person person("盧憲", 63); //普通引用不能綁定常量,常量引用可以綁定常量也可以綁定變量,也就是說如果要用引用,盡量用常量引用 person.show();//為什么person.后面只出現show? 因為從對象去訪問相等于外部訪問,外部訪問只能是public類型 Teacher physicist("盧憲", 63, "物理主任"); physicist.showteacher();//為什么physicist.后面出現shou和teachershow? //因為子類不管是哪種繼承方式,父類public權限依然遺留下來 system("pause"); return 0;}//私有成員函數被類中其他成員函數調用,不對外提供接口,當然也不可以有對象訪問//為了防止外部訪問,可將數據設置成private//繼承方式是為了控制子類的調用(用戶)方對父類的訪問權限
新聞熱點
疑難解答
圖片精選