0
考慮下面的代碼:參考變調用析構
#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
被清理,從而調用析構函數的兩倍。 有什麼辦法可以避免這種行爲?
好抓住!我的錯誤,忘了宣佈(而不是定義)複製構造函數,否則這將被直接指出。乾杯:) – reaper4334 2013-02-21 21:47:28