返回一个对象时,为什么将创建+初始化和返回作为两个单独的语句而不是一个?

Xeo*_*Xeo 3 c++ return creation instantiation

例:

Foo make_foo(int a1, int a2){
  Foo f(a1,a2);
  return f;
}
Run Code Online (Sandbox Code Playgroud)

多次看过这样的功能,只是编码风格/偏好的问题,还是有更多的东西而不是眼睛?具体来说,这个答案让我思考make_unique实施和声称它是异常安全的 - 是否与创建和返回的分裂有关?还是我读了太多这个?为什么不简单写

Foo make_foo(int a1, int a2){
  return Foo(a1,a2);
}
Run Code Online (Sandbox Code Playgroud)

joh*_*han 7

将创建和返回结合起来是完全可以的,教科书经常在不同的行上进行,以便在某种程度上澄清代码.