main方法执行之前,做什么事

1、我们知道程序的入口是main方法,那么在执行main方法之前,需要做些什么准备工作呢?

2、main方法执行之前,必须要把non-local static对象构造完成。static对象有:全局对象,命名空间中的对象,类的static对象(从封装的角度看,类也是一个命名空间),方法内的static对象,其中方法中的static对象是local static对象,其他的是non-local static对象,这些对象分配在全局区,程序结束才释放内存。

3、local static对象直到方法被调用的时候,才进行初始化,而且只初始化一次。non-local static必须在main方法执行之前,进行初始化。

4、在一个编译单元内,non-local static对象按照声明顺序进行初始化。不同编译单元,non-local static对象的初始化顺序是不确定的。为什么?

  因为C++编译器做不到,C++支持单独分别编译,源代码的编译顺序是不确定的。因此,不要期望编译器按照某种顺序初始化non-local static对象,这是不可能的。

5、对于不同编译单元的non-local static对象A,B,我想先初始化A,在初始化B,怎么办?

  把A放在static方法中,暴露接口返回A的引用。

6、与之对应,main方法执行完毕,析构static对象。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值