繁体   English   中英

C ++:在返回的类上调用函数

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM