c – 是一个私人移动构造函数来防止移动?
C中的常见模式是使副本构造函数为private:
class A { public: // ... private: A(const A&); }; 但是下面的代码将会编译(在C 11/14中): A f(); auto a = f(); 该标准包含有关自动生成移动构造函数的信息.我既没有访问标准也没有实际生成移动构造函数的编译器.我的问题是:我必须写 class A { public: // ... private: A(const A&); A(const A&&); }; 以防止移动(和类似运算符)? 解决方法
不,不会.用户声明的复制构造函数的存在应该阻止移动构造函数的隐式生成.根据C11标准第12.8 / 9段:
(编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |