c0d*_*0de 5 c++ methods singleton static
可能重复:
C++单例与完全静态对象
嗨,
为什么我更喜欢单例而不是静态类方法.
MoneyPrinter::addJob(PrinterJob &job);
or
MoneyPrinter::getInstance().addJob(PrinterJob &job);
Run Code Online (Sandbox Code Playgroud)
这只是风格问题吗?你用什么?为什么?
PS.我知道sigletons默认情况下不是线程安全的(第一次初始化).
为什么我更喜欢单例而不是静态类方法
单例可以具有内部状态(在您的示例中,添加的作业列表),即单例类的成员数据.
你用什么?为什么?
如果没有状态,那么静态方法因为这是最简单的.
否则单个,最好是静态初始化(而不是初始化或运行时初始化).
单例使您可以控制类何时实例化,并且正如 DeadMG 指出的那样,您是否想要实例化它。静态类的可控性较差,并且在调用 main 之前实例化。
当单例依赖于在调用 main 之前不可用的其他类或资源时,实例化类的顺序有时可能很关键。
正如您所提到的,如果您从多个线程调用单例,则需要确保使用了线程安全的单例。例如,Scott Meyer(来自Effective C++)的线程就不是安全的。