小測試:全局對象是在入口函數main之前初始化,還是在之後

測試目的如題:

爲此自己親自寫了一個小demo:

#include <iostream>
using namespace std;

class myApp
{
public:
	myApp()
	{
		cout << "myapp constructor" << endl;
	}

	~myApp()
	{

	}
};


myApp theApp;

int main()
{
	cout << "enter main" << endl;
	return 0;
}

//測試目的:
//對於全局函數,是在入口函數之前初始化,還是在入口函數之後初始化...

//結論:

下面看看我們的控制檯輸出 :

在這裏插入圖片描述
全局對象再進入到main之前就已經完成了自己的初始化,爲什麼呢?

爲什麼呢?

肯定是必須在main之前初始化的,因爲main也是一個函數,在調用main之前,會有專門的啓動代碼,啓動代碼負責加載對應的啓動運行庫,包括我們全局對象的初始化,靜態對象的初始化等等,這些完成之後纔會調用main函數.

不然就沒位置對,這些全局對象進行初始化了,在main函數中都是運行時初始化或者調用代碼.

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章