boost库学习之 noncopyable
2015-01-30 20:33
531 查看
c++中定义一个类时,如果不明确定义拷贝构造函数和拷贝赋值操作符,编译器会为我们自动生成这两个函数如
如何防止类的实例被拷贝呢?可以将拷贝构造函数和拷贝赋值操作符定义为private
noncopyable同样为了实现不可拷贝提供帮助,只需要继承boost::noncopyable类即可。需要包含<boost/noncopyable.hpp>头文件,引用boost命名空间
那么
总结:boost::noncopyable明确的表达了设计者的意图,更加友好,减少出错几率,但有时自动生成的拷贝构造函数和拷贝赋值函数是有用的,可以自持swap(),以及用于stl容器。
class TestClass { public: TestClass(const TestClass&); TestClass& operator=(const TestClass&); };
如何防止类的实例被拷贝呢?可以将拷贝构造函数和拷贝赋值操作符定义为private
class 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
- 1.2 boost库学习--类型转换(数值类型to字符串)
- boost库学习
- Boost库学习笔记(二)
- Boost库学习------progress_timer
- Boost库学习之旅入门篇
- Boost库学习笔记(一)
- boost库学习总结
- Boost库学习----timer
- 学习使用BOOST库总结(应用环境 Windows XP + VC6.0)
- c++ Boost库之boost::bind学习
- Boost库智能指针学习
- Boost库学习笔记(一)
- 浅析boost库之noncopyable
- boost库学习笔记
- boost库学习笔记
- Boost库学习笔记 2.1 Boost时间与日期timer库
- C++ boost库学习之——Smart Pointers
- boost库学习笔记
- Boost库学习之旅入门篇