我已经使用赋值运算符重载下面的代码C++超载:赋值运算符在
SimpleCircle SimpleCircle::operator=(const SimpleCircle & rhs)
{
if(this == &rhs)
return *this;
itsRadius = rhs.getRadius();
return *this;
}
我的拷贝构造函数是这样的:
SimpleCircle::SimpleCircle(const SimpleCircle & rhs)
{
itsRadius = rhs.getRadius();
}
在上面的操作符重载的代码,拷贝构造函数被调用因为有一个新的对象正在创建;所以我用下面的代码:
SimpleCircle & SimpleCircle::operator=(const SimpleCircle & rhs)
{
if(this == &rhs)
return *this;
itsRadius = rhs.getRadius();
return *this;
}
其完美的工作,避免拷贝构造函数问题,但有这方面的任何未知的问题(我)?
看看的[复制和交换成语(http://stackoverflow.com/questions/3279543/what-is-the-copy-and-swap -idiom) – Praetorian 2012-04-09 16:37:52
@Praetorian复制和交换成语是好的,如果你知道一个项目可以赋值操作符期间抛出或者如果您正在使用软件时,您有没有发展,不知道是否会发生抛出。如果您正在使用自己的物品,并且您知道不会使用副本进行抛出,并且交换习语不是必需的。 – 2015-03-23 23:10:38