C++編程中公有和掩護和私有的類成員拜訪掌握。本站提示廣大學習愛好者:(C++編程中公有和掩護和私有的類成員拜訪掌握)文章只能為提供參考,不一定能成為您想要的結果。以下是C++編程中公有和掩護和私有的類成員拜訪掌握正文
private
語法
private: [member-list] private base-class
備注
當位於類成員列表之前時,private 症結字指定這些成員僅可從成員函數和該類的友元中停止拜訪。這實用於聲明到下一個拜訪指導符或類的末尾的一切成員。
當位於基類的稱號之前時,private 症結字指定基類的公共成員和受掩護成員為派生類的公有成員。
類中成員的默許拜訪是公有的。構造或結合中成員的默許拜訪是公共的。
基類的默許拜訪關於類是公有的,而關於構造是公共的。 結合不克不及具有基類。
例子
// 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 症結字指定對 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.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
}