【发布时间】:2013-12-29 19:43:10
【问题描述】:
我只想知道什么时候应该在静态对象上使用单例类,反之亦然。因为相同可以用于只有一个实例。 我可以猜测内存存储差异的原因之一。 是否有任何其他理由选择其中一个。
【问题讨论】:
-
在许多情况下,单例实际上是作为具有静态变量的类来实现的。在多线程环境中,我相信当前的 c++ 标准不能确保实现是有效的。在任何其他情况下,您可以使用“静态”实现:stackoverflow.com/questions/1008019/c-singleton-design-pattern
-
你不应该也不要使用!如果您绝对必须使用函数本地静态对象可能会更好。
-
@DietmarKühl:一个函数本地静态对象 = Meyers 的单例。 ;-)
-
@Cheersandhth.-Alf:
int& f() { static int rc{}; return rc; }- 这使得int成为某种单身......?!? -
@DietmarKühl:是的。在 Scott Meyers 之后,它被称为“Meyers”。它的主要问题是,对于类类型,它可能过早地被销毁,例如在启动退出后记录一些关键内容之前释放自身的日志记录工具。在c++03里面也有线程问题,见stackoverflow.com/questions/1661529/…哦,想想可能还有线程问题……