MyClass aClass;
MyClass bClass=aClass; // 調用複製構造函數
MyClass cClass;
cClass=aClass; // 調用賦值操作符
一般來說,如果需要顯式定義複製構造函數,則基於相同的原因,也需要顯式定義賦值操作符
MyClass::MyClass(const MyClass& aClass); // 複製構造函數
MyClass& MyClass::operator=(const MyClass& aClass); // 賦值操作符
定義賦值操作符時要注意自賦值導致遞歸的問題,如
MyClass aClass;
aClass=aClass;
所以賦值操作符應該在定義的時候檢測自賦值,如果發現自賦值,則立即返回自身或其引用
MyClass& MyClass::operator=(const MyClass& aClass)
{
if(this==&aClass)
return *this;
}