CG@CPPBLOG

/*=========================================*/
随笔 - 76, 文章 - 39, 评论 - 137, 引用 - 0
数据加载中……

雕虫小技几则


 
昨天看了一下除颤的代码,发现里面类的框架里有一个NoCopy(类似名字)的类,将拷贝构造函数和赋值运算符声明为私有的,那么继承于这个类的派生类也不能被克隆,注释中强调要私有继承,其实如何继承都可以,只要派生类不在public部分重新定义拷贝构造函数和赋值运算符就可以,另外也不必单独写一个类,这个声明写到基类就可以了。
 
看到这个我又想到一些类似的小技巧,比如单件模式,其实就是将缺省构造函数声明为私有,以限制实例化。例如还有:
 
1、强制必须动态分配,可以将析构函数声明为私有,同时提供free方法(因为不能delete)。
 
2、禁止动态分配,将new方法声明为私有。
 
3、禁止继承,继承一个类(最好虚继承),这个类的构造函数是私有的,并且它的友元类是派生类。这个比较复杂,代码示例如下
 
class final{
        friend class MyTest;
private:
        final(){};
};
class MyTest : public virtual final{
public:
        MyTest(){};
};
 
这样就实现了Java的Final功能。
 

posted on 2007-12-17 21:31 cuigang 阅读(384) 评论(0)  编辑 收藏 引用 所属分类: C/C++


只有注册用户登录后才能发表评论。
网站导航: 博客园   IT新闻   BlogJava   知识库   博问   管理