C++編程中私有和保護(hù)以及公有的類成員訪問控制
private
語法
private: [member-list] private base-class
備注
當(dāng)位于類成員列表之前時,private 關(guān)鍵字指定這些成員僅可從成員函數(shù)和該類的友元中進(jìn)行訪問。這適用于聲明到下一個訪問指示符或類的末尾的所有成員。
當(dāng)位于基類的名稱之前時,private 關(guān)鍵字指定基類的公共成員和受保護(hù)成員為派生類的私有成員。
類中成員的默認(rèn)訪問是私有的。結(jié)構(gòu)或聯(lián)合中成員的默認(rèn)訪問是公共的。
基類的默認(rèn)訪問對于類是私有的,而對于結(jié)構(gòu)是公共的。 聯(lián)合不能具有基類。
例子
// keyword_private.cpp class BaseClass { public: // privMem accessible from member function int pubFunc() { return privMem; } private: void privMem; }; class DerivedClass : public BaseClass { public: void usePrivate( int i ) { privMem = i; } // C2248: privMem not accessible // from derived class }; class DerivedClass2 : private BaseClass { public: // pubFunc() accessible from derived class int usePublic() { return pubFunc(); } }; int main() { BaseClass aBase; DerivedClass aDerived; DerivedClass2 aDerived2; aBase.privMem = 1; // C2248: privMem not accessible aDerived.privMem = 1; // C2248: privMem not accessible // in derived class aDerived2.pubFunc(); // C2247: pubFunc() is private in // derived class }
protected
語法
protected: [member-list] protected base-class
備注
protected 關(guān)鍵字指定對 member-list 中的成員直到下一個訪問說明符(public 或 private)或類定義的末尾的訪問。只能通過以下項使用聲明為 protected 的類成員:
最初聲明這些成員的類的成員函數(shù)。
最初聲明這些成員的類的友元。
使用公共或受保護(hù)訪問(派生自最初聲明這些成員的類)派生的類。
也對受保護(hù)成員具有專用訪問權(quán)限的以私有方式派生的直接類。
當(dāng)以基類的名稱開頭時,protected 關(guān)鍵字指定基類的公共成員和保護(hù)成員是其派生類的保護(hù)成員。
保護(hù)成員不像 private 成員那樣專用,private 成員僅對從中聲明它們的類的成員可訪問,但保護(hù)成員也不像 public 成員那樣公開,public 成員在任何函數(shù)中均可訪問。
也聲明為 static 的保護(hù)成員對派生類的任何友元或成員函數(shù)均可訪問。也聲明為 static 的保護(hù)成員對派生類中的友元或成員函數(shù)可訪問,但只能通過指向派生類的指針、對派生類的引用或派生類的對象。
例子
// keyword_protected.cpp // compile with: /EHsc #include <iostream> using namespace std; class X { public: void setProtMemb( int i ) { m_protMemb = i; } void Display() { cout << m_protMemb << endl; } protected: int m_protMemb; void Protfunc() { cout << "\nAccess allowed\n"; } } x; class Y : public X { public: void useProtfunc() { Protfunc(); } } y; int main() { // x.m_protMemb; error, m_protMemb is protected x.setProtMemb( 0 ); // OK, uses public access function x.Display(); y.setProtMemb( 5 ); // OK, uses public access function y.Display(); // x.Protfunc(); error, Protfunc() is protected y.useProtfunc(); // OK, uses public access function // in derived class }
public
語法
public: [member-list] public base-class
備注
當(dāng)位于類成員列表前面時,public 關(guān)鍵字指定這些成員可從任何函數(shù)訪問。這適用于聲明到下一個訪問指示符或類的末尾的所有成員。
當(dāng)位于基類名稱前面時,public 關(guān)鍵字指定基類的公共和受保護(hù)成員分別是派生類的公共成員和受保護(hù)成員。
類中成員的默認(rèn)訪問是私有的。結(jié)構(gòu)或聯(lián)合中成員的默認(rèn)訪問是公共的。
基類的默認(rèn)訪問對于類是私有的,而對于結(jié)構(gòu)是公共的。 聯(lián)合不能具有基類。
例子
// keyword_public.cpp class BaseClass { public: int pubFunc() { return 0; } }; class DerivedClass : public BaseClass {}; int main() { BaseClass aBase; DerivedClass aDerived; aBase.pubFunc(); // pubFunc() is accessible // from any function aDerived.pubFunc(); // pubFunc() is still public in // derived class }
上一篇:C++編程中break語句和continue語句的學(xué)習(xí)教程
欄 目:C語言
下一篇:簡單了解C++語言中的二元運(yùn)算符和賦值運(yùn)算符
本文標(biāo)題:C++編程中私有和保護(hù)以及公有的類成員訪問控制
本文地址:http://mengdiqiu.com.cn/a1/Cyuyan/2543.html
您可能感興趣的文章
- 04-02func函數(shù)+在C語言 func函數(shù)在c語言中
- 04-02c語言中對數(shù)函數(shù)的表達(dá)式 c語言中對數(shù)怎么表達(dá)
- 04-02c語言沒有round函數(shù) round c語言
- 04-02C語言中怎么打出三角函數(shù) c語言中怎么打出三角函數(shù)的值
- 01-10深入理解C++中常見的關(guān)鍵字含義
- 01-10使用C++實現(xiàn)全排列算法的方法詳解
- 01-10深入Main函數(shù)中的參數(shù)argc,argv的使用詳解
- 01-10APUE筆記之:進(jìn)程環(huán)境詳解
- 01-10c++中inline的用法分析
- 01-10如何尋找數(shù)組中的第二大數(shù)


閱讀排行
本欄相關(guān)
- 04-02c語言函數(shù)調(diào)用后清空內(nèi)存 c語言調(diào)用
- 04-02func函數(shù)+在C語言 func函數(shù)在c語言中
- 04-02c語言的正則匹配函數(shù) c語言正則表達(dá)
- 04-02c語言用函數(shù)寫分段 用c語言表示分段
- 04-02c語言中對數(shù)函數(shù)的表達(dá)式 c語言中對
- 04-02c語言編寫函數(shù)冒泡排序 c語言冒泡排
- 04-02c語言沒有round函數(shù) round c語言
- 04-02c語言分段函數(shù)怎么求 用c語言求分段
- 04-02C語言中怎么打出三角函數(shù) c語言中怎
- 04-02c語言調(diào)用函數(shù)求fibo C語言調(diào)用函數(shù)求
隨機(jī)閱讀
- 01-10使用C語言求解撲克牌的順子及n個骰子
- 01-11ajax實現(xiàn)頁面的局部加載
- 08-05dedecms(織夢)副欄目數(shù)量限制代碼修改
- 01-10C#中split用法實例總結(jié)
- 01-10delphi制作wav文件的方法
- 08-05織夢dedecms什么時候用欄目交叉功能?
- 04-02jquery與jsp,用jquery
- 01-11Mac OSX 打開原生自帶讀寫NTFS功能(圖文
- 08-05DEDE織夢data目錄下的sessions文件夾有什
- 01-10SublimeText編譯C開發(fā)環(huán)境設(shè)置