国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > C++ > 正文

C++編程中私有和保護以及公有的類成員訪問控制

2020-05-23 14:09:43
字體:
來源:轉載
供稿:網友
這篇文章主要介紹了C++編程中私有和保護以及公有的類成員訪問控制,即private和protected以及public關鍵字的相關作用和用法,需要的朋友可以參考下
 

private 
語法

private:  [member-list]private base-class

備注
當位于類成員列表之前時,private 關鍵字指定這些成員僅可從成員函數和該類的友元中進行訪問。這適用于聲明到下一個訪問指示符或類的末尾的所有成員。
當位于基類的名稱之前時,private 關鍵字指定基類的公共成員和受保護成員為派生類的私有成員。
類中成員的默認訪問是私有的。結構或聯合中成員的默認訪問是公共的。
基類的默認訪問對于類是私有的,而對于結構是公共的。 聯合不能具有基類。
例子

// keyword_private.cppclass 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 關鍵字指定對 member-list 中的成員直到下一個訪問說明符(public 或 private)或類定義的末尾的訪問。只能通過以下項使用聲明為 protected 的類成員:
最初聲明這些成員的類的成員函數。
最初聲明這些成員的類的友元。
使用公共或受保護訪問(派生自最初聲明這些成員的類)派生的類。
也對受保護成員具有專用訪問權限的以私有方式派生的直接類。
當以基類的名稱開頭時,protected 關鍵字指定基類的公共成員和保護成員是其派生類的保護成員。
保護成員不像 private 成員那樣專用,private 成員僅對從中聲明它們的類的成員可訪問,但保護成員也不像 public 成員那樣公開,public 成員在任何函數中均可訪問。
也聲明為 static 的保護成員對派生類的任何友元或成員函數均可訪問。也聲明為 static 的保護成員對派生類中的友元或成員函數可訪問,但只能通過指向派生類的指針、對派生類的引用或派生類的對象。
例子

// 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

備注
當位于類成員列表前面時,public 關鍵字指定這些成員可從任何函數訪問。這適用于聲明到下一個訪問指示符或類的末尾的所有成員。
當位于基類名稱前面時,public 關鍵字指定基類的公共和受保護成員分別是派生類的公共成員和受保護成員。
類中成員的默認訪問是私有的。結構或聯合中成員的默認訪問是公共的。
基類的默認訪問對于類是私有的,而對于結構是公共的。 聯合不能具有基類。
例子

// keyword_public.cppclass 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}
 


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 廊坊市| 濉溪县| 怀远县| 上饶市| 洱源县| 贵港市| 呼伦贝尔市| 武冈市| 拉萨市| 隆化县| 南昌县| 鹿泉市| 黔东| 曲阳县| 漾濞| 当涂县| 台中县| 彰化县| 滁州市| 韩城市| 前郭尔| 永城市| 河北省| 井研县| 哈尔滨市| 阜康市| 成都市| 常州市| 丰都县| 收藏| 齐齐哈尔市| 石棉县| 青龙| 华池县| 绥阳县| 葫芦岛市| 女性| 桃园县| 碌曲县| 六枝特区| 江陵县|