san*_*orn 4 c++ constructor c++11
我可以声明三个构造函数
C::C(const C&)C::C(C&&)C::C(const C&&)在一个没有歧义的课堂上.
我们称之为构造函数的是C::C(const C&&)什么?它有什么昵称吗?
我可以提出=delete明确禁止用户在不知不觉中尝试移动const并限制自动复制后备效果.这会提醒用户他们正在做什么.
还有其他用途吗?
C::C(C const&&);
Run Code Online (Sandbox Code Playgroud)
我称之为const限定的移动构造函数.
它通知构造函数它(A)来自一个被丢弃的对象,(B)你不允许改变源对象的非const组件(因为对象可能实际上是const,在这种情况下,它们是未定义的行为).
在C包含mutable状态的情况下,在某些情况下可以安全地移动该状态.如果它没有,它的行为很像a const&,除非组件C有自己的const&&移动构造函数.
在其他情况下,您可能想要=delete它.我个人不会.