我遇到过这个问题,成员函数none()在没有new运算符的情况下调用构造函数。 https://github.com/3rdparty/stout/blob/master/include/stout/result.hpp
但我不明白,如果不使用新关键字,如何分配内存?另外,返回对象的类型是什么?
答案 0 :(得分:3)
如果没有复制令您担心的确切行,我可能会偏离目标,但如果您关心的代码如下:
T f() {
return T();
}
这不是对构造函数的调用,而是创建一个临时的,在这种情况下是 value-initialized 。内存在堆栈中本地分配(如果有的话,返回值优化应该避免它)。