cyshhm 发表于 2013-11-17 16:24:23

第36副本构造器中讲到的一个例题可否这样写

#include<iostream>
#include<string>

class aa
{
public:
      aa(int *p);
      ~aa();

      aa &operator=(const aa &aaa);
      void dy();//打印;
private:
      int* bb;
};

aa::aa(int *p)
{
      bb=p;
}

aa::~aa()
{
      delete bb;
}

aa &aa::operator=(const aa &aaa)
{
      if(this!=&aaa)
      {
#if(0)
            delete bb;//把 bb 空间删除
            bb=new int;//新建一个 bb 空间 整型的
#endif
            *bb=*aaa.bb;//吧 aaa里面的bb 值给 bb指向的地址
      }
      else
      {
            std::cout<<"赋值号两边为同个对象,不做处理!\n";
      }

      return *this;
}

void aa::dy()
{
      std::cout<<bb<<""<<*bb<<std::endl;
}

int main()
{
      aa a1(new int(1));
      aa a2(new int(2));

      a1.dy();
      a2.dy();

      a1=a2;

      a1.dy();
      a2.dy();
}

cyshhm 发表于 2013-11-17 16:25:29

把红色部分不要

删除 本空间 又新建一个 不是费事吗

这个赋值又不是赋值的地址应该没事吧

cyshhm 发表于 2013-11-17 22:50:08

咋没人来看呢 (*^__^*) 嘻嘻……

cyshhm 发表于 2013-11-17 23:58:29

无人问津 自己只有再定一个了

希望知道的告诉

求真理 求真相!
页: [1]
查看完整版本: 第36副本构造器中讲到的一个例题可否这样写