1
11
在任何初始值设定项运行之前,保证所有全局POD数据都初始化为常量值。 因此,在程序开始时,在进行任何寄存器调用之前以及在运行main之前,指针是空的,所有的bools都是假的。然后运行初始值设定项,包括寄存器调用。 编辑:具体来说,从标准(3.6.2.2:非本地对象的初始化)开始:
|
2
4
所有静态变量都在程序开始运行之前初始化。它们在编译时设置,并直接烘焙到可执行文件中。 唯一的问题是当一个静态变量依赖于另一个静态变量时: 在A.HPP中:
在B.HPP中:
静态变量初始化的顺序没有很好地定义,因此在本例中,b可能是1,也可能不是1。只要你的变量不相互依赖,你就没事了。此外,如果不给出初始值,静态成员默认设置为零。 |
3
2
我倾向于看到工厂的“实例”方法实现如下:
但是,关键是对实例的所有访问都是通过静态实例方法运行的。注册两个水果类的调用,例如使用factory::instance()获取singleton,这将确保factory::factory的初始值设定项已执行。在我发布的替代实现中,静态初始化只在第一次调用方法时发生。 apple::registered和banana::registered可能存在的问题取决于它们的使用位置。在发布的代码中,根本没有使用它们。如果仅在apple.cpp和banana.cpp中分别使用,则初始化顺序没有问题。 |
MattT · 添加rowfactory后不显示Javafx表视图 7 年前 |
vpetrovic · 具有Autofac依赖项的工厂 7 年前 |
Praveen Rai · 创建者在工厂模式中的作用 7 年前 |
bschreck · 在不知道类型的情况下返回泛型对象? 7 年前 |
tblznbits · 如何在定义全局方法时从继承的类中动态选择子类 7 年前 |
nanachimi · 当实现的构造函数具有要注入的依赖项时的工厂模式 7 年前 |
satyanarayana · 使用工厂模式在同一表中加载不同的自定义单元格 10 年前 |