我很困惑,爲什麼我必須編寫這個類的拷貝構造函數,當我在第一個提到的類的返回類型中定義一個函數在另一個類中時。當我定義一個具有該類的非引用返回類型的函數時,哪一個類的默認或複製構造函數被調用?
例如:
class Foo{
// attributes
public:
Foo(){...}
// I had to write the CC
Foo(const Foo& obj){
//...
}
}
class Bar{
// ....
// This is the function
Foo SomeFunction()
{
Foo myVar;
// ....
return myVar;
}
我檢查了由荷蘭國際集團cout
的拷貝構造函數實際上是被調用。
我需要確認,因爲在這種情況下調用默認的構造函數似乎更符合邏輯,就像在創建myVar
的這一行中一樣。
我是初學者,所以我試圖圍繞這些調用包圍我的頭。
'myVar'是函數內部的局部變量,它需要被複制到外部變量。 – songyuanyao
@songyuanyao所以複製構造函數在複製時被調用? – developer10
是的,通過複製ctor或複製分配。 – songyuanyao