Rumah > Soal Jawab > teks badan
#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;
}