在下面的代碼中,我的目標是測試outerFunction(myTest).setPrivateVar(5);
行。我不知道爲什麼,但調用此函數不會將myTest
的privateVar
成員更改爲5,但調用cout << outerFunction(myTest).readPrivateVar
正確顯示值200.任何人都可以解釋爲什麼這是?C++:在返回的類上調用函數
#include <iostream>
using namespace std;
class Test {
private:
int privateVar;
public:
void setPrivateVar(int);
int readPrivateVar();
};
void Test::setPrivateVar(int privateVarSet) {
privateVar = privateVarSet;
}
int Test::readPrivateVar() {
return privateVar;
}
Test outerFunction(Test passedTest) {
return passedTest;
}
int main(int argc, char* args[]) {
Test myTest;
myTest.setPrivateVar(200);
cout << myTest.readPrivateVar() << endl;
outerFunction(myTest).setPrivateVar(5);
cout << outerFunction(myTest).readPrivateVar() << endl;
return 0;
}
輸出:
200
200
'測試outerFunction(測試passedTest){'需要Test'的'副本,並返回一個副本。您應該傳遞並通過引用返回'Test&outerFunction(Test&passedTest){' –