SomeClass a, b, c;
SomeClass foo();
SomeClass a = (b + c); //Where is the object (b + c) allocated?
SomeClass a = foo(); //Where is the returned value of foo() allocated?
我的猜测是,它们是在堆上分配的,因为我读到临时对象在expression(;)的末尾被破坏了。
这对我来说很有意义,因为可以通过窃取堆上临时对象的指针来实现move构造函数。
最佳答案
如果完全创建(考虑优化),它们将被自动存储。即堆栈。
关于c++ - 用C++在哪里分配临时对象?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/24428470/