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