我已經使用賦值運算符重載下面的代碼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