搜索
查看: 1074|回复: 3
打印 上一主题 下一主题

如何返回一个临时对象

[复制链接]
跳转到指定楼层
楼主
发表于 2013-8-13 15:41:11 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
5啊哈币
如何返回一个函数中创建的临时对象?
例如:
[code=Cpp width=740px]
class a
{
//省略部分代码
public:
    a& function()
    {
        a A;
        return A;
    }
}
[/code]
在主函数调用该函数后是乱码,但在function中测试变量的值,发现没问题
我的办法是把A定义为静态,但这样会占用大量静态区内存

最佳答案

查看完整内容

临时对象?你说的是局部变量?(语言标准中所谓临时对象是编译器创建出来的) 局部变量拷贝就可以了啊 a function() { a A; return A} 一般这种程度的代码,编译器会进行优化,避免不必要的构建和析构
沙发
发表于 2013-8-13 15:41:12 | 只看该作者
临时对象?你说的是局部变量?(语言标准中所谓临时对象是编译器创建出来的)

局部变量拷贝就可以了啊
a function() { a A; return A}

一般这种程度的代码,编译器会进行优化,避免不必要的构建和析构
板凳
 楼主| 发表于 2013-8-14 12:59:37 | 只看该作者
rosynirvana 发表于 2013-8-13 15:41
临时对象?你说的是局部变量?(语言标准中所谓临时对象是编译器创建出来的)

局部变量拷贝就可以了啊

为什么返回类型改成引用就不对了?
地板
发表于 2013-8-14 13:06:56 | 只看该作者
981013 发表于 2013-8-14 12:59
为什么返回类型改成引用就不对了?

函数返回后变量就没了啊,引用访问到的东西也就没了
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

广播台
特别关注
快速回复 返回顶部 返回列表