看板 C_and_CPP 關於我們 聯絡資訊
#include <iostream> #include <cstdlib> using namespace std; class Caaa { protected: int num; public: Caaa(){num=5;} }; class Cbbb :protected Caaa {}; class Cccc :public Cbbb { public: void show() { //return num; cout << "num = " << num << endl; } }; int main(void) { Cccc c; c.show(); system("pause"); return 0; } ----------------------------------------- 我是c++新手 有在用c++教學手冊自修 想請問一下裡面習題的一個小問題 就是當我把黃色的那個部份擺在Cbbb/Cccc裡都可以跑 會顯示出 num = 5 為何放在Caaa(public)裡卻不行呢? Cccc c不是public-->protected-->public --------->protected把show()繼承下來嗎? 謝謝指教:) -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 140.119.19.39
legnaleurc:protected 繼承會把 public 壓成 protected 05/21 23:36
beckon:class Cbbb :protected Caaa 改成class Cbbb :public Caaa 05/21 23:52
hateexam:不好意思 為什麼我放在Caaa也是顯示為5 05/22 05:04
hateexam:編譯器的關係嗎 05/22 05:04
QQ29:擺在Caaa怎麼會過呢?? 05/22 11:45
Ericcccc:謝謝1.2F的指教 我還是納悶的是show這個function在Caaa 05/22 13:25
Ericcccc:裡是public然後到了Cbbb變成protected. Cccc再用public 05/22 13:26
Ericcccc:繼承他 不是應該會是protected的權限在Cccc裡嗎?為甚麼 05/22 13:27
Ericcccc:會無法存取他呢?謝謝指教! 05/22 13:28
Cloud:因為show只能被用在 derived class的member function裡面 05/22 13:44
Cloud:你用c.show()當然有error 05/22 13:45
legnaleurc:照原PO的想法,那public和protected有什麼差? 05/22 13:50
Ericcccc:我看書後的想法是對base和derive都沒有差 但是protected 05/22 15:59
Ericcccc:無法在讓derive的下一代做存取 是這樣嗎? 05/22 15:59