C 學習筆記 C 類訪問修飾符(3)

2021-10-25 11:52:59 字數 2113 閱讀 6019

關鍵字 public、private、protected 稱為訪問修飾符。

class base ;
公有(public)成員

公有成員在程式中類的外部是可訪問的。您可以不使用任何成員函式來設定和獲取公有變數的值,如下所示:

#include

using

namespace std;

class

box;

// 成員函式定義

double box::

getwidth

(void

)void box::

setwidth

(double wid )

// 程式的主函式

intmain()

當上面的**被編譯和執行時,它會產生下列結果:

length of line :

6length of line :

10

私有(private)成員

私有成員變數或函式在類的外部是不可訪問的,甚至是不可檢視的。只有類和友元函式可以訪問私有成員。

預設情況下,類的所有成員都是私有的。例如在下面的類中,width 是乙個私有成員,這意味著,如果您沒有使用任何訪問修飾符,類的成員將被假定為私有成員:

意味著在類外定義函式來使用private成員

意味著在類外定義函式來使用private成員 例項

#include

using namespace std;

class box

;// 成員函式定義

double box:

:getwidth

(void

)void box:

:setwidth

(double wid )

// 程式的主函式

intmain()

當上面的**被編譯和執行時,它會產生下列結果:

length of box :

10width of box :

10

保護(protected)成員

保護成員變數或函式與私有成員十分相似,但有一點不同,保護成員在派生類(即子類)中是可訪問的。

在下乙個章節中,您將學習到派生類和繼承的知識。現在您可以看到下面的例項中,我們從父類 box 派生了乙個子類 smallbox。

下面的例項與前面的例項類似,在這裡 width 成員可被派生類 smallbox 的任何成員函式訪問。

#include >

using namespace std;

class box;

class smallbox:box // smallbox 是派生類;

// 子類的成員函式

double smallbox::getsmallwidth(void)

void smallbox::setsmallwidth( double wid )

// 程式的主函式

int main( )

當上面的**被編譯和執行時,它會產生下列結果:

width of box : 5

繼承中的特點 有public, protected, private三種繼承方式,它們相應地改變了基類成員的訪問屬性。

1.public 繼承:基類 public 成員,protected 成員,private 成員的訪問屬性在派生類中分別變成:public, protected, private

2.protected 繼承:基類 public 成員,protected 成員,private 成員的訪問屬性在派生類中分別變成:protected, protected, private

3.private 繼承:基類 public 成員,protected 成員,private 成員的訪問屬性在派生類中分別變成:private, private, private

但無論哪種繼承方式,上面兩點都沒有改變:

1.private 成員只能被本類成員(類內)和友元訪問,不能被派生類訪問;

2.protected 成員可以被派生類訪問。

可以對照著菜鳥教程的來看: link.

C 類 類訪問修飾符

目錄類 類訪問修飾符 公有 public 成員 私有 private 成員 保護 protected 成員 類定義以class開頭 定義box類 class box 預設情況下,類的所有成員都是私有的 class base 公有成員在程式中類的外部使用 進行訪問。可以不使用任何成員函式來設定和獲取公...

C 中的訪問修飾符 修飾符 類

版本visual studio 2010 主要參考 修飾符用於修改型別和型別成員的宣告 訪問修飾符 訪問級別 public 訪問不受限制 類內和任何類外中訪問 protected 可訪問域限定於類內或從該類派生的類內 類內和該類的派生類 internal 可訪問域限定於類所在的程式集內 該類所在程式...

C 學習筆記(八) 訪問修飾符

一 類訪問修飾符 無或internal 只能在程式集內訪問類 public 可以在任何地方訪問類 abstract 或 internal abstract 類只能在程式集內訪問,不能例項化,只能供繼承之用 public abstract 類可以在任何地方訪問,不能例項化,只能供繼承之用 seal 或...