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對象。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM