C++中的訪問修飾符
阿新 • • 發佈:2018-12-26
源於牛客網上的一道題目,下列程式編譯時會出現錯誤,請根據行號選擇錯誤位置( ):
<span style="font-size:14px;">#include <iostream> using namespace std; class A{ int a1; protected: int a2; public: int a3; }; class B: public A{ int b1; protected: int b2; public: int b3; }; class C:private B{ int c1; protected: int c2; public: int c3; }; int main(){ B obb; C obc; cout<<obb.a1;//1 cout<<obb.a2;//2 cout<<obb.a3;//3 cout<<obc.b1;//4 cout<<obc.b2;//5 cout<<obc.b3;//6 cout<<obc.c3;//7 return 0; }</span>
答案為:1 2 4 5 6
- 類的繼承後方法屬性變化: private 屬性不能夠被繼承。 使用private繼承,父類的protected和public屬性在子類中變為private; 使用protected繼承,父類的protected和public屬性在子類中變為protected; 使用public繼承,父類中的protected和public屬性不發生改變;
- private, public, protected 訪問標號的訪問範圍: private:只能由1.該類中的函式、2.其友元函式訪問。 不能被任何其他訪問,該類的物件也不能訪問。 protected:可以被1.該類中的函式、2.子類的函式、以及3.其友元函式訪問。 但不能被該類的物件訪問。 public:可以被1.該類中的函式、2.子類的函式、3.其友元函式訪問,也可以由4.該類的物件訪問。 注:友元函式包括3種:設為友元的普通的非成員函式;設為友元的其他類的成員函式;設為友元類中的所有成員函式。
原題地址:http://www.nowcoder.com/profile/853009/test/4774951/46335#summary