在类的外面,其实也可以用指针访问类内部的私有成员,例如:
#include
usingnamespace std;
class a // 定义了类a
{
long a0; // 定义私有成员 a0
public:
a(long b)
{
a0=b;
}
void geta()
{
cout<<a0<<endl;
}
};
int main()
{
a b(5); // 定义对象b,并给 b 中的 a0 赋初值
long*p;
p=(long*)&b; // 令指针 p 指向 b 中前 4 个字节,在这里相当于指向 a0
b.geta(); // 用内部函数访问 a0
cout<<*p<<endl; // 在外部直接访问 a0
*p=8; // 在外部改变 a0 的值
b.geta(); // 输出改变后的结果
cout<<*p<<endl;
return0;
}
需要注意的是,使用这种方法虽然可以用于基于类的多态原则的一些程序开发,但违反了类的封装原则,在使用指针的类中也极不安全,所以不建议使用。