我正在做一个关于数据结构和算法的课程。这里写的代码有一个函数mf()
。它返回int old
。我的问题是它如何返回old
,因为int old
是一个局部变量,它将在返回时被销毁。
class x{
public;
int m;
int mf(int v){int old = m; m = v; return old; }
};
答案 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;
当您返回类并在构造函数和析构函数中打印消息时,您可以观察从old
到tmp
的副本以及old
和tmp
的目标。< / p>
仅供参考,编译器可以使用return value optimization (RVO)将返回值直接存储在n
中。