Line Line::operator =(Line ln) {
cout << "Assignment operator\n";
Line temp;
temp.ptr = new int;
*temp.ptr = *(ln.ptr);
return temp;
}
在上面的代碼,當執行下面的語句拷貝構造函數不叫?函數返回時爲什麼不調用複製構造函數?</p> <pre><code>return temp; </code></pre> <p>自恢復是值的,爲什麼不叫拷貝構造函數:
感謝
你的操作符實現是錯誤的:'operator ='應該返回一個* reference *到'* this',而不是一個新的對象。 –
@Konrad:謝謝你指出這一點。所以你的意思是:* this.ptr = *(ln.ptr);並返回*這? – Iceman
是的。整個'temp'對象是不必要的。但是,您也不應該在這裏使用(原始)指針。 C++提供了更好的機制。 –