http://blog.csdn.net/huang_xw/article/details/8248960#

boost::noncopyable比较简单, 主要用于单例的情况.
通常情况下, 要写一个单例类就要在类的声明把它们的构造函数赋值函数析构函数, 复制构造函数隐藏到private或者protected之中, 每个类都这么做麻烦.
有noncopyable类, 只要让单例类直接继承noncopyable. 
class noncopyable的基本思想是把构造函数和析构函数设置protected权限,这样子类可以调用,但是外面的类不能调用,那么当子类需要定义构造函数的时候不至于通不过编译。但是最关键的是noncopyable把复制构造函数和复制赋值函数做成了private,这就意味着除非子类定义自己的copy构造和赋值函数,否则在子类没有定义的情况下,外面的调用者是不能够通过赋值和copy构造等手段来产生一个新的子类对象的。

#ifndef BOOST_NONCOPYABLE_HPP_INCLUDED
#define BOOST_NONCOPYABLE_HPP_INCLUDEDnamespace boost {//  Private copy constructor and copy assignment ensure classes derived from
//  class noncopyable cannot be copied.//  Contributed by Dave Abrahamsnamespace noncopyable_  // protection from unintended ADL
{class noncopyable{protected:noncopyable() {}~noncopyable() {}private:  // emphasize the following members are privatenoncopyable( const noncopyable& );const noncopyable& operator=( const noncopyable& );};
}typedef noncopyable_::noncopyable noncopyable;} // namespace boost#endif  // BOOST_NONCOPYABLE_HPP_INCLUDED

#include "tfun.h"class myclass: public boost::noncopyable
{
public:myclass(){};myclass(int i){};
};int main()
{myclass cl1();myclass cl2(1);// myclass cl3(cl1);    // error// myclass cl4(cl2);    // errorreturn 0;
}

boost::noncopyable介绍相关推荐

  1. BOOST库介绍,安装

    第1讲boost库介绍 boost是一个准标准库,相当于STL的延续和扩充,它的设计理念和STL比较接近,都是利用泛型让复用达到最大化.不过对比STL,boost更加实用. STL集中在算法部分,而b ...

  2. boost::bind 介绍

    boost::bind 介绍 这篇文章介绍boost::bind()的用法, 文章的主要内容是参考boost的文档. 1. 目的 boost::bind 是std::bindlist 和 std::b ...

  3. boost::noncopyable用法的测试程序

    boost::noncopyable用法的测试程序 实现功能 C++实现代码 实现功能 boost::noncopyable用法的测试程序 C++实现代码 #include <vector> ...

  4. boost库介绍以及使用

    C++ boost库介绍以及使用 一. 什么是boost库 ​ boost 库是一个优秀的,可移植的,开源的 C++ 库,它是由 C++ 标准委员会发起的,其中一些内容已经成为了下一代 C++ 标准库 ...

  5. 最新超详细C++经典Boost库介绍

    Boost库 Boost库是为C++语言标准库提供扩展的一些C++程序库的总称,由Boost社区组织开发.维护.Boost库可以与C++标准库完美共同工作,并且为其提供扩展功能. 目录 Boost库 ...

  6. C++ boost库介绍以及开发环境搭建

    一.什么是boost库 boost 库是一个优秀的,可移植的,开源的 C++ 库,它是由 C++ 标准委员会发起的,其中一些内容已经成为了下一代 C++ 标准库的内容,在 C++ 社区中影响甚大,是一 ...

  7. 【Boost】noncopyable:不可拷贝

    [CSDN]:boost::noncopyable解析 [Effective C++]:条款06_若不想使用编译器自动生成地函数,就该明确拒绝 1.example boost::noncopyable ...

  8. boost实用工具:创建一个禁止复制的类 noncopyable

    boost的noncopyable允许创建一个禁止复制的类,使用很简单,但很好用! C++ Code  1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 ...

  9. Boost(2):boost.python库介绍及简单示例

    1. boost.python介绍 将c/c++的函数接口转换为Python接口有好几种解决方案,不同于C语言的简单直接,C++因使用了大量的面向对象编程的思想导致转换为Python接口时相对比较复杂 ...

最新文章

  1. python能在生活中做什么-Python可以解决哪些生活中的小问题
  2. K8S部署工具:KubeOperator集群导入
  3. 【转】全排列算法非递归实现和递归实现
  4. mysql启动错误1.69,MySQL无法启动例一
  5. .NET Core TDD 前传: 编写易于测试的代码 -- 全局状态
  6. 文件 单片机_如何查看你写的单片机程序有多大?
  7. LeetCode 1441. 用栈操作构建数组
  8. 又又叒更新,Win 12要来了?
  9. Response.Clear() Response.ClearContent()和Response.ClearHeaders()之间的区别
  10. CC***的解决方案
  11. 嘉兴 机器人仓库 菜鸟_投资 2.1 亿!又一高端智能装备项目落户嘉兴科技城
  12. mock教程 java_自动生成 java 测试 mock 对象框架 DataFactory-01-入门使用教程
  13. 仿英雄联盟LOL网页设计作业 HTML CSS游戏官网网页模板 大学生游戏介绍网站毕业设计 DW游戏主题网页模板下载 游戏娱乐网页成品代码 英雄联盟网页作品下载
  14. 刷机-升级到3.80M33的方法
  15. 【CODETOOL】文件比较Beyond Compare使用介绍
  16. 百度登录界面CSS+HTML
  17. 太秀了!程序媛小姐姐写出代码版《本草纲目》,刘畊宏回复:很cool!
  18. 你未必知道的 WebRTC – 前世、今生、未来
  19. 疫情过后,制造业中小企业应用工业互联网数字化转型之路的探讨
  20. 弹出框样式,swal is not define

热门文章

  1. 基于Springboot实现作业管理系统
  2. 温泉关一役历史资料(电影:斯巴达300勇士)
  3. java多线程--死锁
  4. Leetcode 50
  5. 终止线程的2种方法。标记法和中断
  6. Hbase 常见错误总结——摘自忘了
  7. POJ 1068 Parencodings 模拟递归
  8. unittest笔记
  9. Wireshark非标准分析port无流量
  10. QoS policy-map class-map