对于类中的“private:”0
我们老师说过一句话 只有在编译的时候保持c++ oop原则;所以在运行时我们就可以使用安全的手段来访问类中的private内容
我首先想到的就是指针
对于像我这样的小白来讲只要清楚对象的内存分配就OK。
在这里有一个A类:
class A{
public:
A():i(10){ /*在这里给i初值为10*/
cout<<"i have a staring value"<<endl;
}
virtual int f(){
cout <<"hello A::f()"<<endl;
}
int show(){
return i;
}
private:
int i;
};
主函数里面是:
int main(){
A a;
cout <<"sizeof obj a"<<sizeof(a)<<endl; /*对象长度(注:)我原来的代码是有一个A的子类的也有一个虚函数*/
int *p= (int *) &a; /*int 型 指针*/
cout <<"here::A "<<*p<<endl; /*此时应该指向的 虚函数表*/
cout <<":::::::->"<<*(p+2)<<endl; /*指向private的变量i*/
*(p+2)= 1000; /*重新给其赋值*/
cout<<"i=="<<a.show()<<endl; /*通过方法输出 i*/
}
这样就可以对i做任何事情了。(我的是64位机)