C++中,利用指针可以访问private数据成员。
先看下面代码:
程序执行的结果如下:
x::1
y::2
getClassValue:: 1
getClassValue:: 2
从执行的结果可以看出,程序确实访问到了类中的private成员变量。
在上面代码中,int* flag = (int*)(ctest);声明了一个指向类对象的指针,这一步是最重要的,先有一个指针指向对象的初始地址,之后移动这个指针,就可以访问到类的成员。从执行的结果来看,类中成员在内存中的存放顺序应该有如下表示:
由上图可以看到,若顺序移动指针flag,则可以顺序访问到类的private变量x和y。程序的输出也符合这样的推测。