#include <iostream>
class test{
private:
struct tes{
int te;
};
tes t;
public:
test(){
t.te = 5;
}
tes* xixi(){
return &t;
}
};
int main(void){
test test1;
std::cout << test1.xixi()->te;
return 0;
}
代码如上, 类test
中有一个私有的结构体tes
, 但是为什么我能够在外界直接获取结构体内的属性呢? 该结构体对于外界而言不是不可见的吗?
因為你透過xixi()把結構體公開了,你直接取得到了結構體物件的位址,就可以獲得結構體的屬性了,但是你不能直接存取到那個結構體。
補充一個例子。 。 。 。這個例子用來表達表達我的想法,局部static變量,在外面修改。
因為你的
xixi()
是public
的,而其回傳值是tes*
類型,也就是這個時候tes
類型被暴露給外界了