调用没有new关键字的构造函数

时间:2014-04-04 03:06:19

标签: c++

我遇到过这个问题,成员函数none()在没有new运算符的情况下调用构造函数。 https://github.com/3rdparty/stout/blob/master/include/stout/result.hpp

但我不明白,如果不使用新关键字,如何分配内存?另外,返回对象的类型是什么?

1 个答案:

答案 0 :(得分:3)

如果没有复制令您担心的确切行,我可能会偏离目标,但如果您关心的代码如下:

T f() {
   return T();
}

这不是对构造函数的调用,而是创建一个临时的,在这种情况下是 value-initialized 。内存在堆栈中本地分配(如果有的话,返回值优化应该避免它)。