私人和受保護(hù)成員:C ++有人可以告訴我類private和protected成員之間的區(qū)別嗎?我從最佳實(shí)踐約定中了解到應(yīng)該在類外部調(diào)用的變量和函數(shù)private- 但是看看我的MFC項(xiàng)目,MFC似乎更喜歡protected。有什么區(qū)別,我應(yīng)該使用哪個(gè)?
3 回答

慕碼人2483693
TA貢獻(xiàn)1860條經(jīng)驗(yàn) 獲得超9個(gè)贊
所有人都可以訪問A類的公共成員。
A類的受保護(hù)成員不能在A代碼之外訪問,但可以從A派生的任何類的代碼訪問。
A類的私有成員不能在A代碼之外訪問,也不能從A派生的任何類的代碼訪問。
因此,最后,在protected或private之間進(jìn)行選擇會(huì)回答以下問題:您愿意對(duì)派生類的程序員有多少信任?
默認(rèn)情況下,假設(shè)派生類不受信任,并使您的成員成為私有。如果您有充分的理由將母類的內(nèi)部組件自由訪問其派生類,那么您可以使它們受到保護(hù)。

溫溫醬
TA貢獻(xiàn)1752條經(jīng)驗(yàn) 獲得超4個(gè)贊
可以從派生類訪問受保護(hù)的成員。私人不能。
class Base {private: int MyPrivateInt;protected: int MyProtectedInt;public: int MyPublicInt;};class Derived : Base{public: int foo1() { return MyPrivateInt;} // Won't compile! int foo2() { return MyProtectedInt;} // OK int foo3() { return MyPublicInt;} // OK};??class Unrelated {private: Base B;public: int foo1() { return B.MyPrivateInt;} // Won't compile! int foo2() { return B.MyProtectedInt;} // Won't compile int foo3() { return B.MyPublicInt;} // OK};
就“最佳實(shí)踐”而言,取決于。如果有人甚至可能想要從現(xiàn)有的類中獲取新類并且需要訪問內(nèi)部成員,那么請(qǐng)將它們?cè)O(shè)為Protected,而不是Private。如果他們是私人的,你的班級(jí)可能很難輕易繼承。
- 3 回答
- 0 關(guān)注
- 493 瀏覽
添加回答
舉報(bào)
0/150
提交
取消