1
3
对我来说,这样的努力在很大程度上是不值得的。你真的没有提高可读性,不寻常的构造会让未来维护你的代码的程序员感到困惑,而新类的加入增加了复杂性,从而使你暴露在更多错误的可能性中。 我可以看到,您很少需要或想要控制静态初始化的顺序,或者出于其他原因,打包所有静态。但从可读性的角度来看,我更喜欢久经考验的:
如果你有很多这样的静态数据,为什么不把它们全部发送到自己的CPP文件中呢?但话说回来,如果你真的有那么多的静力学,我想知道是否有一些错误的整体设计在第一位。。。 |
2
0
要明确的是,全局变量通常有三个问题(不仅仅是静态变量):
当然,大多数时候破坏并不是什么问题,但它仍然存在。 新的C++ 0x是线程感知的,因此存在一些增益(特别是对于多线程问题的本地静态变量)。 随着C++ 0x的出现,下面的代码可能只会遭受“销毁命令FASASCO”的影响…当然,除非你在初始化时有一个循环引用。
这很好:因为实例是按需创建的,所以当您需要时,它保证它在那里,并且即使在多个线程同时尝试访问函数时,C++也保证了行为。 现在,“破坏令惨败”怎么办? 好吧,对象的解构顺序与它们的构造顺序相反,因此如果你需要在解构器中访问一个对象,那么在构造函数中访问它只是为了确保它在你之前被构建,并且一切正常。 当然,没有C++ 0x的东西有点令人耳目一新。为了避免多线程问题,唯一的建议是在应用程序仍然是单线程(main)时首先访问所有变量。这样所有实例都被创建,不再存在任何并发问题。 |
rookie · 检查函数模板的所有参数包参数是否属于int 1 年前 |
ivaigult · -W转换和隐式字符串到布尔类型转换 1 年前 |
rainer · 后台插入程序的初始化 1 年前 |
Community wiki · 以理智、安全和高效的方式复制文件 1 年前 |
Shefali Kanaujia · 对C中向量的向量进行排序++ 1 年前 |
Ma Joonyoung · 粗粒度和细粒度链表的时间比较 1 年前 |