boost 实用工具 noncopyable学习

noncopyable

  • noncopyable允许程序轻松地实现一个禁止复制的类。
1
2
3
4
//包含noncopyable
#include<boost/noncopyable.hpp>
//或者包含utility,utility包含数个小工具的实现
#include<boost/utility.hpp>

原理

在C++中定义一个类,如果不明确定义拷贝构造函数和拷贝复制操作符,编译器会自动生成。
如果不需要类的复制语义,希望禁止复制类的实例,只需要私有化拷贝构造函数和复制操作符。

用法

noncopyable为实现不可拷贝的类提供了简单清晰的解决方案,从boost::noncopyable派生即可。
继承使用默认的私有继承是允许的,显示写出private或者public修饰符,效果是一样的。使用noncopyable明确表达类设计者的意图,对用户友好,与其它boost库配合良好。
1
2
3
4
class do_not_copy : boost::noncopyable
{
//...
};