一、分析

  在Java中定义了关键字final,被final修饰的类不能被继承。但在C++中没有final这个关键字。

  首先想到的是在C++ 中,子类的构造函数会自动调用父类的构造函数。同样,子类的析构函数也会自动调用父类的析构函数。要想一个类不能被继承,我们只要把它的构造函数和析构函数都定义为私有函数。那么当一个类试图从它那继承的时候,必然会由于试图调用构造函数、析构函数而导致编译错误。

  可是这个类的构造函数和析构函数都是私有函数了,我们怎样才能得到该类的实例呢?

  通过定义静态来创建和释放类的实例。

  二、实现

  下面是一个单利模式的实现

#include <iostream>  
using namespace std;  
class Singleton
{
private:
      Singleton();
      ~Singleton();// {}
      static Singleton *instance;
public:
      static Singleton* GetInstance()
      {
      
            if(instance == NULL)
    {
      instance = new Singleton();
    }
            return instance;
      }
      static void DeleteInstance()
      {
            if(instance != NULL)
    {
      delete instance;
    }
      }

};
Singleton* Singleton::instance=NULL;//一定要初始化(由于不能在方法体内部初始化,所以放到外部)

int main()
{
 
}