【Boost】boost::noncopyable介绍
来源:互联网 发布:书生软件 安卓 编辑:程序博客网 时间:2024/05/22 06:50
boost::noncopyable比较简单, 主要用于单例的情况.
通常情况下, 要写一个单例类就要在类的声明把它们的构造函数, 赋值函数, 析构函数, 复制构造函数隐藏到private或者protected之中, 每个类都这么做麻烦.
有noncopyable类, 只要让单例类直接继承noncopyable.
class noncopyable的基本思想是把构造函数和析构函数设置protected权限,这样子类可以调用,但是外面的类不能调用,那么当子类需要定义构造函数的时候不至于通不过编译。但是最关键的是noncopyable把复制构造函数和复制赋值函数做成了private,这就意味着除非子类定义自己的copy构造和赋值函数,否则在子类没有定义的情况下,外面的调用者是不能够通过赋值和copy构造等手段来产生一个新的子类对象的。
示例:
通常情况下, 要写一个单例类就要在类的声明把它们的构造函数, 赋值函数, 析构函数, 复制构造函数隐藏到private或者protected之中, 每个类都这么做麻烦.
有noncopyable类, 只要让单例类直接继承noncopyable.
class noncopyable的基本思想是把构造函数和析构函数设置protected权限,这样子类可以调用,但是外面的类不能调用,那么当子类需要定义构造函数的时候不至于通不过编译。但是最关键的是noncopyable把复制构造函数和复制赋值函数做成了private,这就意味着除非子类定义自己的copy构造和赋值函数,否则在子类没有定义的情况下,外面的调用者是不能够通过赋值和copy构造等手段来产生一个新的子类对象的。
- #ifndef BOOST_NONCOPYABLE_HPP_INCLUDED
- #define BOOST_NONCOPYABLE_HPP_INCLUDED
- namespace boost {
- // Private copy constructor and copy assignment ensure classes derived from
- // class noncopyable cannot be copied.
- // Contributed by Dave Abrahams
- 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& );
- };
- }
- 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); // error
- return 0;
- }
转自:http://blog.csdn.net/huang_xw/article/details/8248960
- 【Boost】boost::noncopyable介绍
- 【Boost】boost::noncopyable介绍
- 【Boost】boost::noncopyable介绍
- 【Boost】boost::noncopyable介绍 .
- 【Boost】boost::noncopyable介绍
- 【Boost】boost::noncopyable介绍
- Boost】boost::noncopyable介绍
- 【Boost】boost::noncopyable介绍
- boost::noncopyable
- boost noncopyable
- boost::noncopyable
- boost noncopyable
- boost::noncopyable
- boost noncopyable
- boost::noncopyable
- boost::noncopyable
- boost::noncopyable
- boost::noncopyable
- 本人博客开张了
- 图像处理特征不变算子系列之SUSAN算子(三)
- HDOJ 1317 - XYZZY dp(SPFA)+dfs判联通..细心..
- 初始化参数文件介绍
- Java远程调用(一)基本原理
- 【Boost】boost::noncopyable介绍
- 关于linux系统bash shell编程中开头#!/bin/bash的理解
- Android多功能课程表项目实现(完整版)
- UVA 753A Plug for UNIX
- 人工智能,计算机科学的不那么好看的皇冠(系列之一)
- 找工作之面试题练习1
- Longest Substring using dp and thinking on dp
- 2011年大连赛区E题 Number String DP
- 动态参数文件损坏解决方法示例四则