nocopyable的使用
来源:互联网 发布:开淘宝店找货源 编辑:程序博客网 时间:2024/04/28 02:30
- class noncopyable
- {
- protected:
- noncopyable (void)
- {
- }
- ~noncopyable (void)
- {
- }
- private: // emphasize the following members are private
- noncopyable (const noncopyable&);
- const noncopyable& operator= (const noncopyable&);
- };
这里的设计思想是让子类继承,但是阻止子类调用赋值和copy构造函数,有什么用呢?
写代码的时候我经常喜欢用singleton模式,比如那些工厂类,管理者类之类的,但是写这些
singleton的时候当然是希望全局只有一个,而且不希望别人在用的时候又自己创造一个,往往
就要每写一个singleton类就要在类的declaration中把它们的构造函数,赋值函数,析构函数,copy构造函数隐藏到
private或者protected之中,这样真的很累。
现在好了,只要让这些singleton直接继承noncopyable就ok了。这样至少可以不用多写赋值和copy构造
函数了;构造和析构函数看情况而定了。
class noncopyable的基本思想是把构造函数和析构函数设置protected权限,这样子类可以调用,但是外面的类不能调用,
那么当子类需要定义构造函数的时候不至于通不过编译。但是最关键的是noncopyable把copy构造函数和copy赋值函数做成了
private,这就意味着除非子类定义自己的copy构造和赋值函数,否则在子类没有定义的情况下,外面的调用者是不能够通过
赋值和copy构造等手段来产生一个新的子类对象的。举个简单的例子:
class Test : public noncopyable
{
};
void main()
{
Test a,c;
Test b(a); ///<------(1) error
c = a; ///<------(2) error
}
如果Test类没有继承 noncopyable,那么(1)和(2)都可以通过编译,但是一旦Test继承了noncopyable,则(1)和(2)都通不过
编译,从而可以防止调用者写一些错误的代码,这不正是我们做singleton对象所需要的吗?
0 0
- nocopyable的使用
- nocopyable的使用
- boost::nocopyable
- C++ nocopyable
- boost::nocopyable学习
- boost::nocopyable学习
- GUID使用的使用
- ${}的使用
- 的使用
- @[],@()的使用
- ->的使用
- +、-、*、/、%的使用
- &&的使用
- %:的使用
- Makefile中使用$$的使用
- Makefile中使用$$的使用
- Red5的使用--使用日志
- prefernce的使用具体使用
- Linux下创建SVN仓库
- excle导入导出
- android开发之——混淆编译
- Java之RMI介绍
- 移动优先的实用jQuery颜色拾取器插件
- nocopyable的使用
- xcode + lldb简单的调试
- KSQL 判断周数
- 2015-2-12 PHPCMS 【hash】数据验证失败
- mac 下配置tomcat服务
- LoaderManager
- 个人手机APP详单(20150211)
- c_str():string转换成char*
- Reactor