setting limits(訪問限制)
(栗子:private,public,protected)
即為在類中那些成員可以被別人訪問,哪些只能由自己訪問,
to keep the client programmer’s hands off members they shouldn’t touch
to allow the library designer to change the internal workings of structure without worrying about how it will affect the client programmer
C++訪問屬性:
1.public
任何人都可以訪問
2.private
僅有class下的成員函式可以訪問class中的variables或者function(main主函式也不可以,僅在一個class中,而不是.cpp中)
同一個class中不同的的成員函式之間是可以彼此訪問彼此變數的
僅在編譯時刻提醒你有沒有訪問別人私有的東西,
attention:C++的OOP特性僅在源代碼下,編譯過后就不是OOP的東西啦
3.protected
只有這個類自己或者它的子類以及再子類(子子孫孫,無窮無盡,,,)
C++中破壞OOP特性的還有一個東西叫Friend
它的用法是declare別人是你的friend,從而訪問你私有的東西,這個別人可以是class,function,class中的function,
但你不可以宣告你是別人的friend來訪問別人私有的東西,這樣就太犯規啦!
(就好像我說你是我的好朋友,我女朋友就是你女朋友,但我不可以說你是我的好朋友,所以你女朋友就是我女朋友,這樣就合理多啦(憨憨笑))
栗子:
struct X;//這里是一個前向宣告,是一個不完整的類的定義,僅僅為了后面的編譯能夠通過
struct Y{
void f(X*);} //Y中的X便對X有訪問權限
struct X{ //definition:從這里開始定義我們的struct X也不遲
private:
int i;
public:
void initialize();
friend void g(X*,int); //global friend
friend void Y::(X*); //struct member friend
friend struct Z; //entire stuct is a friend
friend void h();
};
tips:
1.某些operator的多載是要以friend授權的
2.一個類已經寫好了就無法再對其friend了
3.friend的授權是在編譯中處理的
這里提到一點class與struct在C++中細微的差別:
如果,你在類里面有沒有宣告訪問屬性的地方**,struct對未宣告的地方全部為public,**除非你的類特別簡單,否則我們一般首選class,
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/279682.html
標籤:其他
上一篇:Notion 團隊人才畫像
