boost::noncopyable介绍
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介绍相关推荐
- BOOST库介绍,安装
第1讲boost库介绍 boost是一个准标准库,相当于STL的延续和扩充,它的设计理念和STL比较接近,都是利用泛型让复用达到最大化.不过对比STL,boost更加实用. STL集中在算法部分,而b ...
- boost::bind 介绍
boost::bind 介绍 这篇文章介绍boost::bind()的用法, 文章的主要内容是参考boost的文档. 1. 目的 boost::bind 是std::bindlist 和 std::b ...
- boost::noncopyable用法的测试程序
boost::noncopyable用法的测试程序 实现功能 C++实现代码 实现功能 boost::noncopyable用法的测试程序 C++实现代码 #include <vector> ...
- boost库介绍以及使用
C++ boost库介绍以及使用 一. 什么是boost库 boost 库是一个优秀的,可移植的,开源的 C++ 库,它是由 C++ 标准委员会发起的,其中一些内容已经成为了下一代 C++ 标准库 ...
- 最新超详细C++经典Boost库介绍
Boost库 Boost库是为C++语言标准库提供扩展的一些C++程序库的总称,由Boost社区组织开发.维护.Boost库可以与C++标准库完美共同工作,并且为其提供扩展功能. 目录 Boost库 ...
- C++ boost库介绍以及开发环境搭建
一.什么是boost库 boost 库是一个优秀的,可移植的,开源的 C++ 库,它是由 C++ 标准委员会发起的,其中一些内容已经成为了下一代 C++ 标准库的内容,在 C++ 社区中影响甚大,是一 ...
- 【Boost】noncopyable:不可拷贝
[CSDN]:boost::noncopyable解析 [Effective C++]:条款06_若不想使用编译器自动生成地函数,就该明确拒绝 1.example boost::noncopyable ...
- 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 ...
- Boost(2):boost.python库介绍及简单示例
1. boost.python介绍 将c/c++的函数接口转换为Python接口有好几种解决方案,不同于C语言的简单直接,C++因使用了大量的面向对象编程的思想导致转换为Python接口时相对比较复杂 ...
最新文章
- python能在生活中做什么-Python可以解决哪些生活中的小问题
- K8S部署工具:KubeOperator集群导入
- 【转】全排列算法非递归实现和递归实现
- mysql启动错误1.69,MySQL无法启动例一
- .NET Core TDD 前传: 编写易于测试的代码 -- 全局状态
- 文件 单片机_如何查看你写的单片机程序有多大?
- LeetCode 1441. 用栈操作构建数组
- 又又叒更新,Win 12要来了?
- Response.Clear() Response.ClearContent()和Response.ClearHeaders()之间的区别
- CC***的解决方案
- 嘉兴 机器人仓库 菜鸟_投资 2.1 亿!又一高端智能装备项目落户嘉兴科技城
- mock教程 java_自动生成 java 测试 mock 对象框架 DataFactory-01-入门使用教程
- 仿英雄联盟LOL网页设计作业 HTML CSS游戏官网网页模板 大学生游戏介绍网站毕业设计 DW游戏主题网页模板下载 游戏娱乐网页成品代码 英雄联盟网页作品下载
- 刷机-升级到3.80M33的方法
- 【CODETOOL】文件比较Beyond Compare使用介绍
- 百度登录界面CSS+HTML
- 太秀了!程序媛小姐姐写出代码版《本草纲目》,刘畊宏回复:很cool!
- 你未必知道的 WebRTC – 前世、今生、未来
- 疫情过后,制造业中小企业应用工业互联网数字化转型之路的探讨
- 弹出框样式,swal is not define