![]() |
1
18
不是的 必要地 一个坏主意,但通常,是的。 首先,是全局数据,全局数据通常是一件坏事。 你的国家越是全球化,你就越难对你的计划进行推理。 第二,C++不能保证在不同的翻译单元(.CPP文件)中定义的静态对象的初始化顺序——如果它们相互依赖,那么你可能会遇到麻烦。 |
![]() |
2
7
示例:目录
你可以尝试添加
编辑:贾尔夫的观点也是有效的。听他的劝告。 |
![]() |
3
1
除了形式可疑之外,它还不能移植到某些平台上。 |
![]() |
4
1
正如你所指出的,这是允许的。在我工作过的上一家公司,当出现这种情况时,我们制定了一项政策,在main()中添加一个适当的注释,以指示该注释适用于哪些变量。如果你有一个糟糕的情况,尽量做到最好。 |
![]() |
5
0
将全局/静态对象与非平凡构造函数和析构函数一起使用 . 我看到了足够多的大型软件项目,它们发现自己陷入了一场灾难,因为它们不受控制地使用全局/静态对象和单音调。
问题不在于代码是在外部运行的
每段代码都应该在定义良好的上下文中运行,所有变量都应该属于它。 |
|
6
0
,一点也不混乱。静态初始化是该语言的一个重要特性。你需要的时候就用吧。与globals相同。你需要的时候就用吧。像任何特性一样,知道它什么时候是合适的,知道它的局限性是成为一个强大的程序员的一部分。 坏的形式是重新构造一个本来非常好的程序,只是为了避免全局或静态初始化。 |
![]() |
7
0
人们通常不会像上面那样编写代码,但要考虑success是否初始化为另一个函数的返回值。现在,任何试图在该函数中使用cout、cerr或任何其他全局对象的人都调用了相同的未定义行为。 对于具有构造函数和析构函数的用户定义类型,请考虑访问为初始化的替代方法:
在我看来,这真的不值得让人头疼,而且这是一个比解决问题容易得多的问题。 |
![]() |
KiraHoneybee · 具有构造函数参数的模板化类 2 年前 |
![]() |
nick2225 · 隐式调用复制构造函数? 2 年前 |
![]() |
nohaga · 为什么在本例中p3需要默认构造函数? 2 年前 |
![]() |
Aadil Hoda · 为什么类类型的成员需要初始化? 2 年前 |
![]() |
EloiGG · 具有任意类型的变量的可数的C++函数 2 年前 |