:
- , singleton . , singleton ! Dan-O , , .
- , , ( ).
- , , , , (), (Logger, Settings ..), .
- locals, # 3 , .
[] safe_static, . . , , , . (aka lazy loading) , , , , . , , , :
#include "log.h"
class Logger
{
}
void Log( const char* data )
{
Logger.getInstance().DoRealLog( data );
}
, , , , ! , , . singleton, Log, , singleton. , : Logger ( , ). . singleton , -, , , - , .
(, extern Logger log;) .
, . , , , , ( ).
, :
Logger& safe_static()
{
static Logger logger;
return logger;
}
:
Logger& Logger::instance()
{
static Logger logger;
return logger;
}
, safe_static. , , .
, , , . , , safe_static . - , , .
.
, . , .
?
, , . / ( / ) .
, , . , , . .
globals.h extern . ?
. @see safe_static .
, ( .)?
, , @see safe_static.
( , "" ): (Logger * log): m_Log () , ? m_Log to NULL ?
. , . , boost:: shared_ptr .
, ( (Logger & log): m_Log (log)), m_Log (Logger & m_Log;) ?
, . , , ( ) , , .
3. ( ). . . , . ?
boost:: scoped_ptr , , safe_static .