第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();
}
把红色部分不要
删除 本空间 又新建一个 不是费事吗
这个赋值又不是赋值的地址应该没事吧 咋没人来看呢 (*^__^*) 嘻嘻…… 无人问津 自己只有再定一个了
希望知道的告诉
求真理 求真相!
页:
[1]