我想在C++中實現一個簡單的單例模式。C++簡單的單例實現返回語句的構造函數
#include <iostream>
class simpleSingleton
{
private:
static simpleSingleton * pInstance;
simpleSingleton(){}
simpleSingleton(const simpleSingleton& rs) {
pInstance = rs.pInstance;
}
simpleSingleton& operator = (const simpleSingleton& rs)
{
if (this != &rs)
{
pInstance = rs.pInstance;
}
return *this;
}
~simpleSingleton(){};
public:
static simpleSingleton& getInstance()
{
static simpleSingleton theInstance;
pInstance = &theInstance;
return *pInstance;
}
void demo()
{
std::cout << "simple singleton."
<< std::endl;
}
};
simpleSingleton *simpleSingleton::pInstance = nullptr;
int main()
{
/*Version 1 */
simpleSingleton * p = &simpleSingleton::getInstance(); // cache instance pointer p->demo();
p->demo();
/*Version 2 */
simpleSingleton::getInstance().demo();
return 0;
}
我的問題是關於多個構造函數可供simpleSingleton
類
simpleSingleton(){}' 'simpleSingleton(const simpleSingleton& rs)
構造函數應返回的類的對象。在上面的例子中,這兩個構造函數都沒有返回語句。然而這似乎是標準的簡單實現。這是爲什麼?
構造函數不返回任何未明確反正。通常使用單例(包括這種情況)使用一種名爲'getInstance'的方法來檢索對象的實例。如果那是你問的問題? –
在開始設計諸如單例模式之前,您應該先獲取C++類的基礎知識。同樣從你的代碼中,複製構造函數和賦值運算符對於單例來說是沒有意義的。它應該是獨一無二的。 –