为什么全局定义"const Date default_date(1970,1,1);"不好?

Why is the global definition "const Date default_date(1970,1,1);" bad?

本文关键字:1970 不好 date 定义 全局 const Date default 为什么      更新时间:2023-10-16

阅读本书编程:使用C 的原理和实践,第二版我出现了以下语句:

...如果您真的需要全局变量(或常数),该怎么办 使用复杂的初始化器?一个合理的例子是我们 想要我们为库提供的日期类型的默认值 支持业务交易:

const Date default_date(1970,1,1); // the default date is January 1, 1970

我们怎么知道default_date在它之前从未使用过 初始化?基本上,我们不知道,所以我们不应该写 定义...

让我对这条代码线感到好奇的是在定义之前使用全局变量的隐含想法。作者(Bjarne Stroupstrup)在初始化之前使用全局变量的含义是什么?当然,可以在其他地方宣布该变量。但是没有提及这种情况。

如果在全球范围中有另一个对象,则在其他地方,具有复杂的构造函数,您没有实用的手段来以便携式方式指定这两个对象的相对初始化顺序。在引用其他对象之前,您无法期望其他对象已构造。

声明全局单人物对象没有任何固有的错误,只要完全理解,未指定不同翻译单元中全局对象的相对初始化顺序。