|
1
3
对我来说,这样的努力在很大程度上是不值得的。你真的没有提高可读性,不寻常的构造会让未来维护你的代码的程序员感到困惑,而新类的加入增加了复杂性,从而使你暴露在更多错误的可能性中。 我可以看到,您很少需要或想要控制静态初始化的顺序,或者出于其他原因,打包所有静态。但从可读性的角度来看,我更喜欢久经考验的:
如果你有很多这样的静态数据,为什么不把它们全部发送到自己的CPP文件中呢?但话说回来,如果你真的有那么多的静力学,我想知道是否有一些错误的整体设计在第一位。。。 |
|
2
0
要明确的是,全局变量通常有三个问题(不仅仅是静态变量):
当然,大多数时候破坏并不是什么问题,但它仍然存在。 新的C++ 0x是线程感知的,因此存在一些增益(特别是对于多线程问题的本地静态变量)。 随着C++ 0x的出现,下面的代码可能只会遭受“销毁命令FASASCO”的影响…当然,除非你在初始化时有一个循环引用。
这很好:因为实例是按需创建的,所以当您需要时,它保证它在那里,并且即使在多个线程同时尝试访问函数时,C++也保证了行为。 现在,“破坏令惨败”怎么办? 好吧,对象的解构顺序与它们的构造顺序相反,因此如果你需要在解构器中访问一个对象,那么在构造函数中访问它只是为了确保它在你之前被构建,并且一切正常。 当然,没有C++ 0x的东西有点令人耳目一新。为了避免多线程问题,唯一的建议是在应用程序仍然是单线程(main)时首先访问所有变量。这样所有实例都被创建,不再存在任何并发问题。 |
|
AstralHex · 矩阵乘法代码工作不正常 1 年前 |
|
|
Fishie · 作为类成员的智能指针是否仍然自动释放?[关闭] 1 年前 |
|
|
Die4Toast · 递归调用成员箭头运算符-> 1 年前 |
|
|
Anka Hanım · 关于结构和动态数组地址的问题 1 年前 |