我對下面的代碼問題:拷貝構造函數和operator =在C++
讓我們說我有了一個拷貝構造函數和接收一個字符串值常規構造一類p。
我有以下代碼:
P doSomething(){
P p("myValue");
return p;
}
int main(){
P m=doSomething();
return 1;
}
- 爲什麼不拷貝構造函數在
doSomething()
函數的調用return p
? - 通話
P m=doSomething()
- 它想調用拷貝構造函數或操作=? 的情況下,這是運營商=,就是這段代碼的差異及以下內容:(拷貝構造函數我知道這裏的呼叫)
P new_val=("newVal"); p m=new_val;
謝謝, 瑪麗
可能重複[爲什麼析構函數被調用一次?(http://stackoverflow.com/questions/ 6422114/why-has-the-destructor-been-called-only-once) –
你可以發佈你在'class P'中定義的拷貝構造函數的代碼嗎? – cpx
在初始化一個變量時,即使您正在編寫'=',也始終使用複製構造函數。關於爲什麼它沒有在你的例子中使用,可能是編譯器優化了你的代碼? – Shahbaz