为什么全局定义"const Date default_date(1970,1,1);"不好?
Why is the global definition "const Date default_date(1970,1,1);" bad?
阅读本书编程:使用C 的原理和实践,第二版我出现了以下语句:
...如果您真的需要全局变量(或常数),该怎么办 使用复杂的初始化器?一个合理的例子是我们 想要我们为库提供的日期类型的默认值 支持业务交易:
const Date default_date(1970,1,1); // the default date is January 1, 1970
我们怎么知道default_date在它之前从未使用过 初始化?基本上,我们不知道,所以我们不应该写 定义...
让我对这条代码线感到好奇的是在定义之前使用全局变量的隐含想法。作者(Bjarne Stroupstrup)在初始化之前使用全局变量的含义是什么?当然,可以在其他地方宣布该变量。但是没有提及这种情况。
如果在全球范围中有另一个对象,则在其他地方,具有复杂的构造函数,您没有实用的手段来以便携式方式指定这两个对象的相对初始化顺序。在引用其他对象之前,您无法期望其他对象已构造。
声明全局单人物对象没有任何固有的错误,只要完全理解,未指定不同翻译单元中全局对象的相对初始化顺序。
相关文章:
- 以螺旋方式打印矩阵的程序.(工作不好)
- 书中的这个例子不好吗
- 将 ptr 传递给 ptr 到 A 作为参数传递给 A 的函数是不好的做法吗?
- 为什么rand()的使用被认为是不好的
- 作为指针注入类后重新创建堆栈对象不好吗?
- 如果 C 函数仍然可以间接执行(通过回调函数),那么将它声明为静态函数是否是一种不好的做法?
- OpenGL:在着色器中执行TexCoord计算,不好的做法?
- 我有一个线程 1:EXC_BAD_ACCESS(代码 = 1,地址 = 0x8)错误.我认为这是由于内存管理不好.我可以
- 将较大的整数写为二进制并读回它们会产生不好的结果
- #include < Windows.h>是不好的做法吗?
- 如何在Mac OSX中获取真实的日历微秒时间(自1970年以来的纪元)?
- 使用静态转换,因为动态转换失败.不好的做法?
- 为什么用短不好
- 使用空基类强制继承抽象工厂的做法是不好的吗?
- OPENCV WARPPERSPECTIVE错误:频道数量不好
- 假设容器值将自动创建是不好的做法吗?
- 使用新放置作为复制分配运算符不好吗?
- 重载基类函数是不好的做法吗?
- 重新初始化指针是一种不好的做法吗?
- 为什么全局定义"const Date default_date(1970,1,1);"不好?