在“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 析