賦值操作符

默認的賦值操作符用於處理同類對象之間的賦值,不要與複製構造函數混淆.如果是創建新的對象,則調用複製(拷貝)構造函數,如果是修改已有對象的值,則調用賦值操作符
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;
}

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章