啊哈磊_编程从这里起步

标题: 如何返回一个临时对象 [打印本页]

作者: 981013    时间: 2013-8-13 15:41
标题: 如何返回一个临时对象
如何返回一个函数中创建的临时对象?
例如:
[code=Cpp width=740px]
class a
{
//省略部分代码
public:
    a& function()
    {
        a A;
        return A;
    }
}
[/code]
在主函数调用该函数后是乱码,但在function中测试变量的值,发现没问题
我的办法是把A定义为静态,但这样会占用大量静态区内存
作者: rosynirvana    时间: 2013-8-13 15:41
临时对象?你说的是局部变量?(语言标准中所谓临时对象是编译器创建出来的)

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

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

局部变量拷贝就可以了啊

为什么返回类型改成引用就不对了?
作者: rosynirvana    时间: 2013-8-14 13:06
981013 发表于 2013-8-14 12:59
为什么返回类型改成引用就不对了?

函数返回后变量就没了啊,引用访问到的东西也就没了




欢迎光临 啊哈磊_编程从这里起步 (https://bbs.codeaha.com/) Powered by Discuz! X3.2