C++ C+中的对象返回+;
当返回对象时,我认为返回指针或引用是正确的方法,因为在返回对象时会创建临时对象 在本例中,hello()函数返回类型为A的对象,返回的值存储在对象A中C++ C+中的对象返回+;,c++,stack,return,return-value,C++,Stack,Return,Return Value,当返回对象时,我认为返回指针或引用是正确的方法,因为在返回对象时会创建临时对象 在本例中,hello()函数返回类型为A的对象,返回的值存储在对象A中 A hello() { A a(20); // <-- A object is created in stack cout << &a << endl; return a; // <-- Temporary object is created for return value }
A hello()
{
A a(20); // <-- A object is created in stack
cout << &a << endl;
return a; // <-- Temporary object is created for return value
}
void test1()
{
A a = hello(); // copy constructor is called
cout << &a << endl;
}
执行结果:
*I'm in
0x7fff62bb30c0 <-- from hello()
0x7fff62bb30c0 <-- from test1()
*I'm out
*我在
0x7fff62bb30c0应该有很多非常类似的问题。这是一个:这确实是一个重复:寻找返回值优化。另外,如果类a
有一个移动构造函数,C++将保证复制构造函数永远不会被调用。
*I'm in
0x7fff62bb30c0 <-- from hello()
0x7fff62bb30c0 <-- from test1()
*I'm out