我們知道,類的私有成員在類的外部是不能被訪問的。
例如有下面的這個(gè)簡(jiǎn)單的類:
class ClxECS { private: int iPrivate; }; |
那么下面的這個(gè)函數(shù)是不能通過編譯的:
void ECS_test() { ClxECS lx; lx.iPrivate = 13; cout << lx.iPrivate << endl; } |
但是,我們并不是沒有辦法來訪問類的私有成員。
其實(shí),方法很簡(jiǎn)單,只要在類的聲明前面加上如下一行代碼就行了:
同樣的,這個(gè)方法對(duì)保護(hù)成員也適用:
但是,這是一個(gè)非正規(guī)的手段,它將破壞類的所有封裝性。而C++中的#define的存在也是為了跟C兼容。所以只有在非常特殊的情況下,才會(huì)用這種非正規(guī)方法訪問類的私有或保護(hù)成員。