函數(shù)set()和get()在main函數(shù)中都不能調(diào)用,說(shuō)明它們的調(diào)用權(quán)限僅屬于類,即對(duì)main不可見(jiàn)。同理可知dump().
下面我們以公有繼承為例:
#include《iostream》
using namespace std;
class A{
public:
void dump()const{....}
protected:
void get_x(){x++;}
private:
int x;
};
class B:public A
{
public:
void get(){ get_x();}
/* void get_y(){ y=x;} */
void compare(A &a){ a.get_x();}
protected:
id set(){...}
private:
t y;
};
main()
{
B b;
A a;
/* b.get_y(); */ //wrong! x在B類不可見(jiàn),不能訪問(wèn).
b.get();//ok! 由于x是私有的,所以派生類不可見(jiàn),但能間接訪問(wèn).
/* b.compare(a); */ //wrong!這個(gè)是我之前一直沒(méi)想通的,但是現(xiàn)在清楚了。因?yàn)閷?duì)象a調(diào)用的get_x()權(quán)限僅屬于A,所以對(duì)B不可見(jiàn)。
return 0;
}
于是我們知道,在派生類不可見(jiàn)的成員并不是不可訪問(wèn)的,可以通過(guò)間接的方式訪問(wèn)!
總結(jié)上面的,做了一張表:(注:派生類中成員的可見(jiàn)性是指繼承來(lái)的和自身添加的成員。)
相關(guān)推薦:過(guò)來(lái)人談:計(jì)算機(jī)等級(jí)考試三級(jí)之路高分經(jīng)驗(yàn)北京 | 天津 | 上海 | 江蘇 | 山東 |
安徽 | 浙江 | 江西 | 福建 | 深圳 |
廣東 | 河北 | 湖南 | 廣西 | 河南 |
海南 | 湖北 | 四川 | 重慶 | 云南 |
貴州 | 西藏 | 新疆 | 陜西 | 山西 |
寧夏 | 甘肅 | 青海 | 遼寧 | 吉林 |
黑龍江 | 內(nèi)蒙古 |