關於C 初始化的問題

時間 2022-06-13 13:30:07

1樓:匿名使用者

程式的執行順序是.

先引導程式到記憶體.->初始化全域性變數.->呼叫main函式->main函式退出->刪除全域性變數->其他收尾工作.

所以一般來說是會輸出的. 輸出在main函式被呼叫之前. 析構函式輸出在main結束以後

之所以加個"一般", 是因為cout也是個全域性變數, 你不能保證cout在你的q之前被初始化.

如果q先初始化, 而cout還未初始化完成, 那麼就不會輸出了. 這一點在不同的編譯器會不同.

同樣的, 如果在main結束後, cout比q先析構完成, 那麼第二句也不會輸出.

2樓:匿名使用者

會的,輸出結果是:

q因為你用類q定義了乙個全域性變數q1,定義的同時呼叫建構函式,輸出q。

又因為q是全域性變數,程式結束後,其生命週期並沒結束,所以不呼叫析構函式。

3樓:隆隆

會輸出的,

q —— 輸出在定義物件的時候,因為是全域性的,所以就算是在main外也會被定義,只要被定義建構函式就會被呼叫的。

q...—— 輸出在程式終止前,所謂的全域性物件一直不釋放是在程式執行期間內的說法。在程式結束的時候也會被釋放記憶體。(否則的話電腦記憶體就成一次性產品了。。。)

注意,程式在執行主函式之前還有很多準備工作。所謂的程式從main開始是說給初學者的,易於理解。

vc6.0我沒有試(沒有vc6.0),不輸出析構函式的內容的原因可能是編譯器理解為這個是系統動作,不屬於程式動作的原因。(就是編譯器差別)

4樓:

會輸出,程式仍然會構造q1物件,呼叫建構函式和析構函式,結果輸出:

qq....

5樓:

q q1;//物件被建立,自動呼叫建構函式

但是你把這句放在了main函式外面,就成為類的宣告了,顯然類宣告不會調建構函式,就無輸出。

放在main裡面就能輸出了。

6樓:殘影之月殤

那個 q q1的位置是不是寫錯了,如果在裡面的話,先呼叫建構函式,再呼叫析構函式

輸出 q

q....

物件陣列初始化,物件陣列初始化(C )

95郭逗比 一 一維 int numbers new int 不定長 int numbers new int 3 定長 二 多維 int numbers new int 不定長 int numbers new int 2,2 定長 三 例子 a int mf1 new int 6 注意初始化陣列的範...

c語言為什麼要初始化,c語言為什麼要初始化

c的區域性變數一般是在棧上進行分配的。棧使用的是ram,掉電內容丟失,上電內容隨機。這裡的隨機,一般指其不能確定其內容一定是什麼,而不是說其內容完全沒有規律,與數學上的隨機數沒有什麼關係。舉個例子,乙個位元組的ram,8位有256種可能。數學上講隨機數,那麼這個位元組上電後應該是256種可能性中某乙...

陣列初始化問題

分配的空間,比如 int a 10 這就是在定義時由系統給你分配了10個int型別的空間,這個空間是可以初始化的,比如 int a 10 那麼在這個定義之後,系統會首先分配10個int型別的儲存空間,然後把大括號裡面的數字分別的,按順序放到這10個空間裡。你所做的只是寫這麼一句,而陣列賦值的操作就由...