复制初始化和直接初始化之间的C ++有区别吗? (C ++ 11版)

时间:2015-02-22 11:58:33

标签: c++ c++11

I just saw a similar question,但它来自5年前。

现在我们有了C ++ 11,引入了新的移动语义,这可能会改变上述问题中的行的解释方式。 那么,这些线在新标准中的表现如何呢?

struct POD {
  double doge; // so plain, much data, wow
}

class CopyCtible {
public:
  CopyCtible();
  CopyCtible( int );
  CopyCtible( CopyCtible const& );
  CopyCtible( CopyCtible&& ) = delete;
  ~CopyCtible();
}

class CopyCtibleEx {
public:
  CopyCtibleEx();
  CopyCtibleEx( int );
  explicit CopyCtibleEx( CopyCtibleEx const& );
  CopyCtibleEx( CopyCtibleEx&& ) = delete;
  ~CopyCtibleEx();
}

class MoveCtible {
public:
  MoveCtible();
  MoveCtible( int );
  MoveCtible( MoveCtible const& ) = delete;
  MoveCtible( MoveCtible&& );
  ~MoveCtible();
}

class BothCtible {
public:
  BothCtible();
  BothCtible( int );
  BothCtible( BothCtible const& );
  BothCtible( BothCtible&& );
  ~BothCtible();
}

POD pod1 = POD();
POD pod2 = pod2;

CopyCtible cc1 = CopyCtible();
CopyCtible cc2 = 10;

CopyCtibleEx cce2 = 20;

MoveCtible mc1 = MoveCtible();
MoveCtible mc2 = 30;

BothCtible bc1 = BothCtible();
BothCtible bc2 = 42;

我故意删除了不那么有趣的线条(比如MoveCtible mc3 = mc1; - 哦来吧,很明显一个好的编译器只会告诉你放下键盘并走开),但是,如果你不那么铁杆的人希望,我也可以添加它们。

0 个答案:

没有答案