對c++ public、protected、private關鍵字的理解


首先要明確一下:

1.這三個關鍵字在兩種地方會用到,一個是對類的成員變量和成員函數修飾時(比如私有的成員變量,受保護的成員變量·,公有的函數),還有一種是對繼承方式的修飾(比如公有繼承,保護繼承)。

2.這三個關鍵字在對成員變量或成員函數修飾時表示外部(與內部相對,若一個類包括一個.h文件和.cpp文件,出了這兩個文件就是外部了)對該成員的訪問權限。在內部的話顯然都是可以訪問的

下面我將舉一個例子在說明這些關鍵字的運用和理解:

class A

{

public:

  A();

  ~A();

  void funA();

private:

  void funB();

public:

  int a;

protected:

  int b;

private:

  int c;

};

先仔細看清楚外部(由該類在其他地方實例化的對象也屬於外部,私有的和受保護的也不能訪問)在訪問該類各個成員變量和成員函數的訪問權限,public修飾的都可以訪問,private和protected修飾的不可以訪問。

接下來是跟繼承聯系起來(這在C++)開發中是不可避免的:

class B : public A(公有繼承)

{

public:

  B();

  ~B();

private:

  int d;

}

這個時候,在B類內部,可以訪問到A類的public成員和protected成員,其private成員不可訪問,但是並不意味着A類的private成員不可繼承,當你實例化B類對象的時候,其對象內存結構里也會有A類的private成員。

說說protected這個關鍵字的事吧!

其實private和public在修飾上已經很全面了,但是由於繼承的關系,protected出現了。

父類的某個成員變量不想讓外部訪問,可以用private修飾,但是這樣的話子類也就無法訪問該成員變量,為了同時滿足這兩種需求,protected關鍵字應運而生。

protected關鍵字存在的意義,就在於可以讓父類的protected成員既不能被外部訪問,但又能被子類(內部)來訪問。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM