全局初始化

这次和同学一起做 C++ 课的 project ,我们分成几个层次在做,我做的比较底层的东西。后来我发现在底层库可用之前我需要做一些全局的初始化。以前做 C 的 project 的时候是使用了一个 init() 函数,要求在使用之前必须调用。不过现在在 C++ 里面有构造函数可以用。于是我可以完全向上一层隐藏这个细节了。

要做的就是定义一个具有私有构造函数的类,然后定义一个 const 的私有静态实例,最后把这个类链接到程序里面,就可以保证在 main() 函数之前这个类的构造函数被调用了。

// Init.hpp
class Init
{
private:
    Init();
    
static const Init startup_init;
}
;

// Init.cpp
static const Init Init::startup_init;

Init::Init()
{
    
// init code here
}


由于这只关系到本层次的初始化,与其他初始化代码(如果有的话)无关,所以不用担心静态对象初始化顺序的问题。而 Init 类既不能在外面实例化,也不能获取那个唯一的实例的引用,就算是专心干它自己唯一的工作了。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值