首页 > 代码库 > boost库学习之 noncopyable
boost库学习之 noncopyable
c++中定义一个类时,如果不明确定义拷贝构造函数和拷贝赋值操作符,编译器会为我们自动生成这两个函数如class TestClass { public: TestClass(const TestClass&); TestClass& operator=(const TestClass&); };如何防止类的实例被拷贝呢?可以将拷贝构造函数和拷贝赋值操作符定义为privateclass TestClass { private: TestClass(const TestClass&); TestClass& operator=(const TestClass&); };noncopyable同样为了实现不可拷贝提供帮助,只需要继承boost::noncopyable类即可。需要包含<boost/noncopyable.hpp>头文件,引用boost命名空间class TestClass : public boost::noncopyable { };那么TestClass tc1; TestClass tc2(tc1); //编译出错 对于private还是public继承,效果相同。总结:boost::noncopyable明确的表达了设计者的意图,更加友好,减少出错几率,但有时自动生成的拷贝构造函数和拷贝赋值函数是有用的,可以自持swap(),以及用于stl容器。
boost库学习之 noncopyable
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。