次のコードを検討してください。
#include <iostream>
class Singleton
{
public:
// GetInstance returns an instance to an existing Singleton object
static Singleton& GetInstance()
{
static Singleton instance;
return instance;
}
// Destructor
~Singleton()
{
std::cout << "Singleton destructor" << std::endl;
}
private:
// Private constructor
Singleton()
{
std::cout << "Singleton constructor" << std::endl;
}
};
int main()
{
Singleton mySingleton = Singleton::GetInstance();
return 0;
}
これの出力は次のとおりです。
Singleton constructor
Singleton destructor
Singleton destructor
参照変数mySingleton
がクリーンアップされているように見えるため、デストラクタが 2 回呼び出されます。この動作を回避する方法はありますか?