我正在做一门关于数据结构和算法的课程。这里编写的代码中有一个函数mf()
。它返回int old
.My问题是,它如何返回old
,因为int old
是一个局部变量,在返回时将被销毁。
class x{
public;
int m;
int mf(int v){int old = m; m = v; return old; }
};
发布于 2018-03-16 05:26:20
函数返回old
的值,而不是变量本身。它正在返回值的副本。
发布于 2018-03-16 05:52:01
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
的分解。
编译器可以使用返回值优化(RVO)直接将返回值存储在n
中。
https://stackoverflow.com/questions/49313681
复制相似问题