demo代码如下,demo中通过指针访问Demo类的私有int变量a和b并改变了它们的值。
#include <cstdio>
using namespace std;
class Demo {
private:
int a;
int b;
public:
Demo(){
this->a = 10;
this->b = 11;
}
int getA() {
return a;
}
void setA(int a) {
this->a = a;
}
int getB() {
return this->b;
}
void setB(int b) {
this->b = b;
}
};
int main(int argc, char const** argv) {
Demo demo;
printf("demo.getA():%d demo.getB():%d\n", demo.getA(), demo.getB());
int* a = (int*)& demo;
(*a)++;
int* b = a+1;
(*b)++;
printf("*a:%d *b:%d\n", *a, *b);
printf("demo.getA():%d demo.getB():%d\n", demo.getA(), demo.getB());
return 0;
}
可以发现访问私有变量并改变值成功了。