函数返回一个值

时间:2018-03-16 05:22:14

标签: c++

我正在做一个关于数据结构和算法的课程。这里写的代码有一个函数mf()。它返回int old。我的问题是它如何返回old,因为int old是一个局部变量,它将在返回时被销毁。

class x{
public;
int m;
int mf(int v){int old = m; m = v; return old; }
};

2 个答案:

答案 0 :(得分:3)

该函数返回old的值,而不是变量本身。它返回值的副本。

答案 1 :(得分:0)

C / C ++会将返回变量的值传递给临时值:

class x{
    public:
    int m;
    int mf(int v){
        int old = m; // store member var m in old.
        m = v; // change m to v.
        return old; // return the old value of m.
                    // **tmp = old;**
    }
};

x foo;
foo.m = 5;
int n = foo.mf(3); // n = tmp; so now tmp is 5, and it's assigned to n;

当您返回类并在构造函数和析构函数中打印消息时,您可以观察从oldtmp的副本以及oldtmp的目标。< / p>

仅供参考,编译器可以使用return value optimization (RVO)将返回值直接存储在n中。