在google的帮助下,我创建了一个单例日志类,即:
class Log{
public:
void Initialize(const char* fileName, int logLevel, ...);
void outString(const char* str, ...);
void outError(const char* str, ...);
void outWarning(const char* str, ...);
static Log* GetInstance()
{
if (!m_instance)
m_instance = new Log();
return m_instance;
}
private:
Log() {}
Log(const Log&);
Log& operator=(const Log&);
private:
static Log *m_instance;
void SetColor(bool stdout_stream, Color color);
string getCurrentTime();
void ResetColor(bool stdout_stream);
int m_logLevel;
ofstream *m_file;
};现在我想知道这里的*是什么:静态日志*m_instance;为什么我们将它设置为指针?我不太明白。我是说,这意味着什么?
发布于 2013-08-29 15:12:08
它是一个指针,因此它最初可以为null;然后在第一次访问上使用new创建实例时指向实例;请参见GetInstance函数。
这是Singleton反模式的“惰性泄漏”变体:实例是在第一次访问时创建的,从未销毁。就像所有在C++中实现单例的尝试一样,它也有一些优点:
还有一些缺点:
发布于 2013-08-29 15:03:49
它是指向类中唯一一个实例的指针。
您可以通过'Log::getInstance()‘静态函数访问这个实例。
当我们在实践中不需要代码中的一个类的多个实例时,我们使用单例模式。
https://stackoverflow.com/questions/18514416
复制相似问题