1
我對以下代碼感到困惑,我想不通爲什麼Test t
作爲參數在calc
和return t
將調用Test(Test &t)
?任何人都可以幫我明確嗎?非常感謝!如何在C++中傳遞自引用作爲參數?
#include <iostream>
using namespace std;
class Test {
public:
Test(int na, int nb) {
a = na;
b = nb;
}
Test(Test &t) {
a = t.a + 1;
b = t.b + 1;
}
int getValue() {
return a + b;
}
Test calc(Test t) {
return t;
}
private:
int a;
int b;
};
int main() {
Test t(1, 1);
cout << t.calc(t).getValue() << endl;
}
感謝您的快速回復,我可以弄清楚你說'calc(t)';然而,爲什麼'返回t'也觸發拷貝構造函數?我認爲它應該和'calc'的'Test t'一樣的地址? – CYB
@CYB我剛剛解釋它,看看編輯。 – vsoftco
哦!該函數需要返回一個'Test'對象,所以它再次被複制!它是否正確 ?順便說一句,非常感謝你! – CYB