一个小白对oop c++ 访问private内容的理解

对于类中的“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位机)



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值