2012-06-03 90 views
2

假設我們使用C有一個類++何時調用構造函數?

class X { 
    int i; 
public: 
    X(int y): i(y) {} 
}; 

X r(10); 

int main() { 
    return 0; 
} 

所以我們有一個全局對象河 我的問題是,當在編譯時或運行時調用全局或靜態對象的構造函數嗎?因爲程序的執行從主函數開始。 到那時,所有的全局對象都應該被初始化。

+1

在構造函數中放置一個斷點,找出一個斷點。 – IronMensan

回答

5

當然不在編譯時。它在運行時調用,在main進入之前。然後初始化所有全局變量和靜態變量(不包括方法範圍的靜態變量)。

+0

但是執行從main()開始,那麼在進入main之前如何初始化呢? – Luv

+2

@Luv不,它不。 'main'是入口點,它由運行時調用。但這不是第一個被調用的東西。 –