Re: [問題] 關於繼承的問題

看板C_and_CPP作者 (Juan)時間16年前 (2009/05/22 08:20), 編輯推噓1(100)
留言1則, 1人參與, 最新討論串3/7 (看更多)
※ 引述《QQ29 (我愛阿蓉)》之銘言: hi 你試著把程式寫成以下的形式 為啥這樣可以印 compile沒有錯誤呢? #include <iostream> using namespace std; class Caaa { protected: int num; public: Caaa(){num=5;} void show() { //return num; cout << "num = " << num << endl; } }; class Cbbb :protected Caaa {}; class Cccc :public Cbbb { public: void QQ(){show();} }; int main() { Cccc c; c.QQ(); system("PAUSE"); return 0; } 原因就是Cccc看到的show是protected 而protected 在自己class裡面 需要透過member function才能呼叫 所以我就透過QQ()了 (跟private一樣) ------------------------------------------------------ 我剛剛試了在QQ()裡面寫cout << "num = " << num << endl; 這樣反而可以印的出來,所以說protected的data member跟member function 被呼叫的方法其實不是一樣的?如果是data member可以直接在Cccc存取, 而如果是function的話,則必須要像QQ大 所講的,用member fuction呼叫他才能使用 是這樣嗎?是這樣的話我就瞭解了,只是覺得好怪喔~~ 謝謝你的回答:) -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 140.113.207.187 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 140.119.19.39

05/22 16:22, , 1F
並不是...你完全誤解了protected的意義
05/22 16:22, 1F
文章代碼(AID): #1A5c0yuD (C_and_CPP)
討論串 (同標題文章)
文章代碼(AID): #1A5c0yuD (C_and_CPP)