标签:通过 void 静态成员函数 one 虚拟 继承 ati 模板类 关系
面试中可能遇到让设计一个无法被继承的类。最简单的实现是将该类的构造函数设置为私有的,然后通过静态成员函数调用私有构造函数实例化对象,这样的类确实不可继承,但是使用起来非常不方便,必须使用静态成员实例化对象,而且对象存储在堆中,无法像一个普通的类一样的被使用。最佳的设计是结合私有构造函、友元、虚拟继承实现。
1 class Simple{ 2 private: 3 Simple(){}; 4 ~Simple(){} 5 private: 6 static Simple* getInstance(){ 7 return new Simple(); 8 } 9 static void deleteInstance(Simple* instance){ 10 delete instance; 11 } 12 };
1 template<typename T> 2 class NoneInherit { 3 friend T; 4 private: 5 NoneInherit() { 6 } 7 ~NoneInherit() { 8 } 9 }; 10 11 class Finalclass: virtual public NoneInherit<Finalclass> { 12 public: 13 Finalclass() { 14 } 15 ~Finalclass() { 16 } 17 }; 18 19 //class TestClass: public Finalclass { 20 //};
关键点:
标签:通过 void 静态成员函数 one 虚拟 继承 ati 模板类 关系
原文地址:http://www.cnblogs.com/wxquare/p/7280025.html