c++ 类内私有的结构体对于外界而言是公开的?
本文介绍了c++ 类内私有的结构体对于外界而言是公开的?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
问 题
#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变量,在外面修改。
#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;
}
这篇关于c++ 类内私有的结构体对于外界而言是公开的?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文