#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
, 但是为什么我能够在外界直接获取结构体内的属性呢? 该结构体对于外界而言不是不可见的吗?
PHP中文网2017-04-17 14:31:50
因為你透過xixi()把結構體公開了,你直接取得到了結構體物件的位址,就可以獲得結構體的屬性了,但是你不能直接存取到那個結構體。
補充一個例子。 。 。 。這個例子用來表達表達我的想法,局部static變量,在外面修改。
#include <iostream>
using namespace std;
int* func()
{
static int a = 2;
cout << a << endl;
return &a;
}
int main()
{
int* ptr = func();
*ptr = 3;
func();
return 0;
}