[Boost库] noncopyable——禁止拷贝的类

1、noncopyable允许程序轻松地实现一个禁止拷贝的类,在头文件<boost/noncopyable.hpp>
 
2、实现原理很简单:noncopyable的实现就是用了C++中的阻止拷贝
            参考《C++ Primer》第五版P449或者我的笔记类的设计(2)——拷贝控制(阻止拷贝
1)方式一:将拷贝构造函数和拷贝赋值运算符定义为private的
namespace noncopyable_  // protection from unintended ADL
{
  class noncopyable
  {
   protected:
      noncopyable() {}
      ~noncopyable() {}
   private:  // emphasize the following members are private
      noncopyable( const noncopyable& );
      const noncopyable& operator=( const noncopyable& );
  };
}
2)方式二:将拷贝构造函数和拷贝赋值运算符定义为删除的(=delete),采用C++11标准
class noncopyable
  {
   protected:
      noncopyable()=default;
      ~noncopyable() =default;

      noncopyable( const noncopyable& )=delete;
      const noncopyable& operator=( const noncopyable& )=delete;
  };
 
posted @ 2018-12-20 21:46  zhizhiyu  阅读(523)  评论(0编辑  收藏  举报