我正在研究Stroustrup的原則和實踐的第18章,並將其與複製構造函數相關的一部分進行了簡化。何時在C++中調用複製構造函數? - 函數返回
我有一個拷貝構造函數定義爲:
X(const X& x) {
out("X(X&)");
val = x.val;
}
X是一個結構。 val爲只是X. '出' 的一個int值:
void out(const string& s) {
cerr << this << "->" << s << ": " << val << "\n";
}
我還具有以下2個功能定義爲:
X copy(X a) {
return a;
}
和
X copy2(X a) {
X aa = a;
return aa;
}
在主我有:
X loc(4);
X loc2 = loc;
loc2 = copy(loc);
loc2 = copy2(loc);
當我只是調用複製時,複製構造函數被調用兩次:複製參數範圍一次,返回調用一次。這對我有意義。
但是,當我調用copy2時,複製構造函數仍然只調用兩次:一次是函數參數,一次是'X aa = a'。爲什麼不要求回報?
該鏈接是非常有益的,謝謝達幸 –