延迟初始化要初始化的对象
Delay initializing a what to initialize with?
我有一个类,我希望在稍后程序初始化时实例化它。在此之前,我绝对不想要这个类的任何实例。我希望这个实例在全局范围内可用。
最简单的方法是使用一个全局变量作为该类的引用,这很简单——只需在类实例化之后赋值引用即可。除非在此之前我需要用填充引用,或者我将声明为引用但未初始化,并且我宁愿不创建所述类的虚拟实例。
让它工作的正确方法是什么?
configClass& global_config; // = ?
init()
{
//... other prerequisites for loading the config
static configClass _cfg(CONFIG_FILE,other_params);
global_config = _cfg;
//more code, using global_config
}
这就是指针的作用。
设置1为nullptr
,直到它指向某个存在的对象。
或者,研究boost::optional
。
更好的是,完全取消这个全局变量。
你已经可以看到它在你的代码中造成的问题/混乱!
根据配置类的需要,一个选项可能是configClass
包含自己的init()
方法。然后您可以立即初始化引用(根据语言的要求),并从问题中的init()
方法调用global_config.init();
。
相关文章:
- C++使用整数的压缩数组初始化对象
- 如何使用cudaMallocManaged在指针位置初始化对象?(C++)
- 在 c++ 中初始化对象
- C++ 手动分配和初始化对象
- 使用运算符"="在C++中用值初始化对象
- 当我不需要数据库中的所有值时,如何部分初始化 c++ 对象?
- 如何初始化对象数组?
- 在C++中使用默认构造函数初始化对象的不同方法
- 使用默认构造函数初始化对象的不同方法
- 是否可以在编译时初始化对象的 C 样式函数指针,以便它调用对象的成员函数?
- 如何在线程中初始化对象,然后在其他地方使用它?
- 在没有默认构造函数时使用垃圾数据初始化对象
- 如果在 C++ 构造函数中以错误的顺序初始化对象数据,会发生什么类型的错误
- 初始化对象以在 C++08 中作为参数传递的首选语法是什么?
- 在 c++ 中复制对未初始化对象的引用
- 在成员变量在另一个文件中发生更改后,调用与初始化对象分开的函数
- 在不放置新运算符的情况下,在预分配的内存上使用虚函数初始化对象 - 这可能吗?如果没有,为什么
- 复制 CTOR 与赋值运算符以初始化对象(性能)
- 当您通过分配初始化C 对象时会发生什么
- 获取未初始化对象成员的地址是否定义良好?