1. 程式人生 > >C++中的訪問修飾符

C++中的訪問修飾符

源於牛客網上的一道題目,下列程式編譯時會出現錯誤,請根據行號選擇錯誤位置( ):

<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