![]() |
1
8
我认为最重要的原因是不能将未命名类放在命名空间范围内。因此,以下内容无效(GCC接受,但发出警告)。COMEAU不接受严格模式):
类型
|
![]() |
2
4
当然,C++中使用单体对象的主要原因是通过在实例方法中使用“惰性构造”来控制初始化顺序。 作为一个例子,我的很多代码都使用一个日志记录器singleton,其中日志消息被写入其中。这在许多月球之前就作为一个古老的“全球”开始了,但在被咬后,在建造之前尝试使用它,现在它变成了一个独生子: 在…之前
…之后
我已经阅读了“单身人士是坏”的帖子,但没有看到任何人建议C++更好的选择。 |
![]() |
3
2
可以在头中声明并在CXX中实现的singleton类,因此可以跨CXX文件共享。对于未命名的类不能这样做,因为每个CXX都将尝试拥有自己的对象实例。 |
![]() |
4
1
即使这样改变代码可能不会影响代码生成,也是一个糟糕的想法。迟早有人会做一个小调整,在调试或发布中生成不同的代码,然后您会遇到无法在调试版本中复制的发布崩溃。 |
![]() |
5
1
虽然方便,但单件通常 a bad idea . 见 this page 替换设计。 |
![]() |
6
1
从你的问题中,我可以看出你并不真正理解单例模式的本质和目的。 如果你想的话,可以用单件 全球的 对象可由许多“客户端”访问,您希望确保只创建此对象的一个实例。 以记录器对象为例。您希望能够从代码的任何部分进行日志记录,但是项目中应该只有一个日志记录器。这是单身的好地方。 您的示例看起来像是用小范围创建了一个本地对象。因为这个单件不需要。它使代码更清晰,更容易阅读。 |
![]() |
7
0
如果(除了错误冗长性)没有行为差异,全局实例需要1个额外的loc,那么单例实例将需要一组非平凡的样板文件。吻 |
![]() |
8
0
使用单件。使用const。初始化它们 全部的 在里面 一 上帝班。注意并避免静态初始化顺序错误: http://www.parashift.com/c++-faq-lite/ctors.html#faq-10.12 |
![]() |
S qasem · Android内存性能 6 年前 |
![]() |
R83nLK82 · 在单例设计模式上引发IOException 6 年前 |
![]() |
hal · 两个课程有什么区别?他们的工作方式不同吗? 6 年前 |
![]() |
Jaquarh · 如何在不使用DI的情况下实例化父类 6 年前 |
|
Deepanshu · 基于PHP的Web应用程序中的单例对象状态 6 年前 |
![]() |
dicle · 视图控制器中的依赖项注入 6 年前 |
![]() |
Kozuki · 如何在生产代码中考虑单例? 6 年前 |