C++ 单例模式的虚构函数的调用
请教大家一个问题,我的单例类如下:
//*********************** Singleton.h file **********************
class Singleton
{
public:
static Singleton* getInstance();
int getia();
virtual ~Singleton(void);
private:
int ia;
Singleton(void);
//把复制构造函数,=操作符也设为私有,防止被复制
Singleton(const Singleton&);
Singleton& operator=(const Singleton&);
static Singleton *instance;
};
//*********************** Singleton.cpp file **********************
Singleton::Singleton(void)
{ ia = 7;
}
Singleton::~Singleton(void)
{ printf("sssssssssssssssssssss\n");
}
Singleton::Singleton(const Singleton&)
{
}
Singleton& Singleton::operator=(const Singleton&)
{
Singleton *p = 0;
return *p;
}
//在此处初始化(类的私有属性instance)
Singleton* Singleton::instance = new Singleton();
Singleton* Singleton::getInstance()
{ return instance;
}
int Singleton::getia()
{ return ia;
}
//********************main.cpp file*****************
void main()
{
Singleton *p1 = Singleton::getInstance();
}
运行得到程序为 Singleton.exe
问题:1、当程序退出是会调用虚构函数吗?如果会调用为什么,我该如何测试?(我自己通过命令行执行 Singleton.exe 后发现printf("sssssssssssssssssssss\n");还是无法输出,说明没调用虚构函数,
要在主函数中写上 delete Singleton::getInstance(); 后才调用,不是说静态成员变量的虚构函数会自动调用吗?)