我認爲發生的是由SetVar返回的右值A是與Class相同的副本並共享相同的指針Var。但是當右值調用它的解構器時,它會刪除Class的Val。 class A
{
private:
int* Var;
public:
A SetVar(int);
~A()
{
delete Var;
}
};
A A::SetVar(in
可能重複: Is pass-by-value a reasonable default in C++11? 我讀Want Speed? Pass by Value.由戴維·亞伯拉罕有關複製省略和RVO。我想知道爲什麼我們需要複製elision? 我被告知太多次了,你應該通過const引用傳遞函數參數來避免複製(幾乎所有讀過的C++書都告訴我這個)。 假設我們有兩個功能: int f1(const