如果一个类没有默认构造函数,因为它应该始终初始化它的内部变量,那么它不应该有移动构造函数吗?
class Example final {
public:
explicit Example(const std::string& string) : string_(
string.empty() ? throw std::invalid_argument("string is empty") : string) {}
Example(const Example& other) : string_(other.string_) {}
private:
Example() = delete;
Example(Example&& other) = delete;
Example& operator=(const Example& rhs) = delete;
Example& operator=(Example&& rhs) = delete;
const std::string string_;
};
此类始终期望内部字符串由非空字符串设置,并且内部字符串在Example
对象之间复制。我是否正确,移动构造函数在此处不适用,因为如果移动示例,则必须通过std::move
调用将字符串留空?