返回默认构造值有什么问题吗?

Jas*_*ker 7 c++ oop constructor visual-c++

假设我有以下代码:

class some_class{};

some_class some_function()
{
    return some_class();
}
Run Code Online (Sandbox Code Playgroud)

这似乎工作得很好,并省去了为了生成返回值而必须声明变量的麻烦.但我认为我从未在任何教程或参考中看到过这一点.这是编译器特定的东西(visual C++)吗?或者这是做错了什么?

180*_*ION 16

不,这是完全有效的.这也将更有效,因为编译器实际上能够优化临时.


Ric*_*chS 5

从函数调用返回对象是"工厂"设计模式,并被广泛使用.

但是,无论是返回对象还是指向对象的指针,都要小心.前者将介绍复制构造函数/赋值运算符,这可能很痛苦.