C++ 在此对象创建过程中会发生哪些复制/分配操作?

C++ 在此对象创建过程中会发生哪些复制/分配操作?,c++,constructor,copy,return-value,C++,Constructor,Copy,Return Value,在MakeObj函数中,obj由值返回。因此,在指定中,将复制创建的对象。似乎有两种操作——一种是在MakeObj中创建对象并分配其字段,另一种是在返回时复制对象 编译器是否优化了这些步骤之一? 创建复杂对象并分配它的最快方法是什么?从语义上讲,在C++03中,代码中有两个副本,即当它从MakeObj()返回时,但第一个副本通常由编译器优化。这种优化被称为 在C++11中,返回的对象实际上是移动的(如果可用和可访问的话),而不是复制的,这是由编译器优化的。谢谢。你知道Mac上的LLVM是否会执行

在MakeObj函数中,obj由值返回。因此,在指定中,将复制创建的对象。似乎有两种操作——一种是在MakeObj中创建对象并分配其字段,另一种是在返回时复制对象

编译器是否优化了这些步骤之一?

创建复杂对象并分配它的最快方法是什么?

从语义上讲,在C++03中,代码中有两个副本,即当它从
MakeObj()
返回时,但第一个副本通常由编译器优化。这种优化被称为


在C++11中,返回的对象实际上是移动的(如果可用和可访问的话),而不是复制的,这是由编译器优化的。

谢谢。你知道Mac上的LLVM是否会执行这些优化吗?@AndrewS.:这是非常常见的优化。LLVM编译器非常棒。他们必须这样做(至少对于你发布的代码)。
class myObj
{
   myObj() {};
}

myObj MakeObj()
{
    return( myObj() );
}

main()
{
   myObj o = MakeObj();
}