使用c++编写一个不能被继承的类

由于c++没有像Java一样有final关键字,在Java中被final关键字修饰的类是不能被继承的,所以使用c++实现不能被继承的类时会比较麻烦。

在继承机制中,当调用子类的构造函数时会自动调用父类的构造函数,对于析构函数也是一样,当调用子类的析构函数时会自动调用父类的析构函数。那么,我们可以把构造函数和析构函数都定义为私有的,当子类要继承父类时,必然会调用父类的构造函数和析构函数,这样就会导致编译错误了。

当时怎样才能得到该类的实例呢,我们可以通过定义一个静态的方法来创建和销毁类的实例。

 1 class FinalClass{
 2 public:
 3   static FinalClass* getInstance()
 4 {
 5    return new FinalClass;
 6 }  
 7   static void Delete(FinalClass* f)
 8 {
 9    delete f;
10    f=0;
11 }
12 private:
13 FinalClass(){}
14 ~FinalClass(){}
15 
16 };

 

posted on 2015-01-07 18:42  daocaorendeshijie  阅读(155)  评论(0编辑  收藏  举报

导航