首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >函数返回值

函数返回值
EN

Stack Overflow用户
提问于 2018-03-16 05:22:13
回答 2查看 139关注 0票数 0

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

代码语言:javascript
运行
复制
class x{
public;
int m;
int mf(int v){int old = m; m = v; return old; }
};
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2018-03-16 05:26:20

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

票数 3
EN

Stack Overflow用户

发布于 2018-03-16 05:52:01

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

代码语言:javascript
运行
复制
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的分解。

编译器可以使用返回值优化(RVO)直接将返回值存储在n中。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/49313681

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档