使用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) 编辑 收藏 举报