yang131

导航

关于c++出现的易错问题

比如我一个对象,经常操作用的指针ptr,原生指针比如ClassA* ca =;

但是我要保存ca,在另一个地方操作,比如: cb =ca; 这样子是不行的,因为我要操作的是ca,而不是ca的值,为什么呢,因为ca代表这个对象,而&ca,代表的是ca的地址;我用cb可以动态的更换值,来改变不同ClassA对象;

所以这里用了二级指针,Class** cb; cb = &ca; 比如:

  {

  ClassA* ca = CallFunction();  //

      this->cb = &ca;  //这个是错误的用法。因为ca超出这个域就会被析构,cb指向了非法的地址,或者已经被释放的内存,造成后续无法访问。正确的写法如后面

  }

把CallFunction的返回值改成Class**, 简而言之:避免试用临时变量和指针的地址,这是不对的。

 

当然如果比较好的办法,是设计解决,多用typedef 或者多封装,避免使用多级指针。不过代码量可能会很多,推荐大工程使用,小工程的话就牢记不要使用临时变量和指针的地址。

posted on 2024-06-02 23:12  NoNight  阅读(2)  评论(0编辑  收藏  举报