[英]C++: Calling a function on a returned class
在下面的代码中,我的目标是测试outerFunction(myTest).setPrivateVar(5);
线。 我不确定为什么,但是调用此函数不会将privateVar
成员myTest
为5,而是调用cout << outerFunction(myTest).readPrivateVar
正确显示值200。有人可以解释为什么会这样吗?
#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
当您将某些内容传递给函数以及返回时,您都在这里制作副本:
Test outerFunction(Test passedTest) {
return passedTest;
}
对outerFunction(myTest)
修改会影响副本,而不是原始副本。
为了获得您似乎想要的语义,您需要使用引用:
Test& outerFunction(Test& passedTest) {
return passedTest;
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.