为什么返回的临时对象具有与函数本地对象相同的地址?

时间:2016-06-19 16:09:44

标签: c++

在“C ++完整参考”一书中,提到“当一个函数返回一个对象时,一个临时对象会自动生成 创建,保存返回值。这个对象实际上是由函数“返回的。但是当我编写代码并进行测试时,函数内部的对象地址和临时对象返回的地址都是相同的。新的编译器中有什么改变了 返回对象??如果没有,有人请帮助我理解为什么会这样。感谢

class obj
{
public:
    obj()
    {
        cout<<"constructor\n";
    }
    ~obj()
    {
        cout<<"destructor\n";
    }
};


obj getObj()
{
    obj s;
    cout<<"In getObj:"<<&s<<"\n";
    return s;
}

void function(const obj &s)
{
    cout<<"address returned by getObj:"<<&s<<"\n";    
}

int main()
{
    function(getObj());
    return 0;
}

输出:     构造函数     在getObj中:0x7ffcf0bdc4c7     getObj返回的地址:0x7ffcf0bdc4c7     析

0 个答案:

没有答案