Boost C++ 库

...世界上最受尊敬和专业设计的 C++ 库项目之一。 Herb SutterAndrei Alexandrescu, C++ Coding Standards

PrevUpHomeNext

noncopyable

头文件 <boost/core/noncopyable.hpp>

作者

  • Dave Abrahams

头文件 <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,可以强制使用优化的和简单的构造函数和类似的析构函数。这在当前实现中已完成。


PrevUpHomeNext