头文件 <boost/core/noncopyable.hpp>
定义了类 boost::noncopyable
。它旨在用作私有基类。boost::noncopyable
具有私有(在 C++03 下)或已删除(在 C++11 下)的复制构造函数和复制赋值运算符,并且不能被复制或赋值;从它派生的类会继承这些属性。
boost::noncopyable
最初由 Dave Abrahams 贡献。
namespace boost { class noncopyable; }
#include <boost/core/noncopyable.hpp> class X: private boost::noncopyable { };
类 noncopyable 具有受保护的构造函数和析构函数成员,以强调它仅用作基类。Dave Abrahams 指出,担心添加(即使是微不足道的内联)析构函数声明对编译器优化的影响。他说
“可能这种担忧是错位的,因为 noncopyable
主要用于拥有资源的类,因此具有非平凡的析构语义。”
在 C++2011 中,通过声明构造函数和析构函数并将其标记为 default
,可以强制使用优化的和简单的构造函数和类似的析构函数。这在当前实现中已完成。