gpt4 book ai didi

c++ - 为什么全局定义 "const Date default_date(1970,1,1);"是坏的?

转载 作者:行者123 更新时间:2023-11-30 03:36:09 25 4
gpt4 key购买 nike

在阅读Programming: Principles and Practices using C++, 2nd Edition这本书时,我想到了以下声明:

...what do you do if you really need a global variable (or constant) with a complicated initializer? A plausible example would be that we wanted a default value for a Date type we were providing for a library supporting business transactions:

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

How would we know that default_date was never used before it was initialized? Basically, we can’t know, so we shouldn’t write that definition...

让我对这行代码感到好奇的是在定义之前使用全局变量的隐含思想。作者 (Bjarne Stroupstrup) 在初始化之前使用全局变量到底是什么意思?当然,可以在其他地方声明该变量。但是没有提到那个场景。

最佳答案

如果在其他地方的全局范围内声明了另一个具有复杂构造函数的对象,则您没有实际的方法来 specify the relative initialization order of these two objects in a portable manner .对于任何一个对象,您都不能期望在引用另一个对象之前已经构造了另一个对象。

在有意义的地方声明全局单例对象本质上没有错,只要充分理解未指定全局对象在不同翻译单元中的相对初始化顺序即可。

关于c++ - 为什么全局定义 "const Date default_date(1970,1,1);"是坏的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40824924/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com