看板 C_and_CPP 關於我們 聯絡資訊
※ 引述《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
legnaleurc:並不是...你完全誤解了protected的意義 05/22 16:22