Re: 關於c++的繼承

看板Programming作者 (ha(ruhi|yate)ism)時間17年前 (2007/06/18 06:48), 編輯推噓1(100)
留言1則, 1人參與, 最新討論串2/3 (看更多)
※ 引述《jiannrong@kkcity.com.tw ( )》之銘言: : 請教一下 : c++的繼承可以寫public/preotected/private : 我的意思是class可以寫 : class Hobbit:public people : class Hobbit:protected people : class Hobbit:private people : 而這些不同的繼承方式究竟會有什麼差別呢? : 我有博碩的書 可是書本內沒有解釋這個 : 所以在此請教 : 謝謝 換一本書吧 這種東西是應該要解釋的 (不然就是你沒看到) 它們的差別大致如下 class base { public: int base_pub; private: int base_priv; protected: int base_prot; }; class pubDer: public base { void f() { base_pub=0; //OK, 它還是public base_priv=0; //error, 因為它是private base_prot=0; //OK, 它還是protected } }; class privDer: private base { void f() { base_pub=0; //OK, 但它變成private base_priv=0; //error base_prot=0; //OK, 它也變成private } }; class privDer2: public privDer { void g() { base_pub=0; //error, 因為在privDer中它是private base_prot=0; //error, 同上 } }; class protDer: protected base { void f() { base_pub=0; //OK, 但它變成protected base_priv=0; //error base_prot=0; //OK, 它還是protected } }; class protDer2: public protDer { void g() { base_pub=0; //OK, 因為在protDer中它是protected base_prot=0; //OK, 同上 } }; int main(void) { pubDer pubd; privDer privd; protDer protd; pubd.base_pub=0; //OK, 因為它是public privd.base_pub=0; //error, 因為它是private protd.base_pub=0; //error, 因為它是protected return 0; } -- 有人喜歡邊玩遊戲上逼; 也有人喜歡邊聽歌打字。 但是,我有個請求, 選字的時候請專心好嗎? -- 改編自「古 火田 任三郎」之開場白 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 192.192.197.116

06/18 06:57, , 1F
漂亮
06/18 06:57, 1F
文章代碼(AID): #16TRehat (Programming)
文章代碼(AID): #16TRehat (Programming)