• 拷贝构造函数


    含指针的类,存在深拷贝和浅拷贝问题

    下面示例显示,

    类A析构函数进行指针内存的释放,而不重载相应的拷贝构造函数,

    局部变量析构的时候会释放成员变量f对应内存,导致mAmap结构中数据的无效。

    所以需要重写A的拷贝构造函数,进行深拷贝。当然具体情况以类定位为依据。

    class A

    {
    public:
      A()
      {
        f = new float(0.34);
      }
      A(const A& a)
      {
        f = new float(*a.f);
        //f = a.f;
      }
      A& operator = (const A& a)
      {
        f = a.f;
        return *this;
      }
      ~A()
      {
        delete f;
        f = NULL;
      }
      float* f;
    };

    void main ()

    {

      typedef std::map<std::string,A>AMap;

      AMap mAmap;
      {

        A a;
        mAmap.insert(AMap::value_type("aa",a));
      } 

    }

  • 相关阅读:
    Django REST framework 1
    爬虫基本原理
    QueryDict对象
    Django组件ModelForm
    MongoDB
    Algorithm
    BOM
    CSS
    Vue
    AliPay
  • 原文地址:https://www.cnblogs.com/geospatial/p/5409479.html
Copyright © 2020-2023  润新知