關鍵字 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三種繼承方式,它們相應地改變了基類成員的訪問屬性。可以對照著菜鳥教程的來看: link.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 成員可以被派生類訪問。
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 或...