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)'について何を言ったかを理解することができます。しかし、なぜ 'return t'もコピーコンストラクタをトリガしたのですか?私は 'calc'の' Test t'と同じアドレスでなければならないと思いますか? – CYB
@CYB私はちょうどそれを今説明した、編集を参照してください。 – vsoftco
ああ!関数は 'Test'オブジェクトを返さなければならないので、再びコピーされます!これは正しいです ?ところで、ありがとう! – CYB