2012-04-22 72 views
2

如果您在函數中創建了像int,char,float這樣的原始類型變量,您是在運行時還是在編譯時創建了該變量?在C++中編譯時間和運行時間

如果您在函數內創建了一個對象,您是在運行時還是在編譯時創建了該對象?

如果通過堆內存分配創建對象,您是在運行時還是在編譯時創建該對象?

什麼是靜態內存分配和動態內存分配?

回答

4

如果您在函數內部創建了像int,char,float 等基本類型的變量。你是否在運行時或編譯時創建了該變量?

您在運行時創建變量,該變量在函數執行時創建,並在函數完成時被銷燬。

如果您在函數內部創建了一個對象。您是在運行時還是在編譯時創建該對象?

同上。

如果通過堆分配內存來創建對象。您是在運行時還是在編譯時創建該對象?

如果你正在堆上創建一個對象,你基本上是在運行時分配內存並得到一個指向它的指針。用這個指針,你可以讀/寫這個內存。

靜態存儲器,是隻能在運行時讀取的存儲器。

動態內存分配,是指在堆上分配對象並通過指向內存的指針更改它們。

+0

那麼沒有變量和對象在編譯時創建?那麼編譯時創建的東西是什麼?他們說繼承是在編譯時,多態和組合在運行時是什麼意思?不要擔心我理解多態性和組合,所以不需要解釋這一點。感謝高級 – user1349313 2012-04-22 09:16:43

+0

我的理解是,靜態變量存儲爲程序二進制文件的一部分(即代碼,標記爲靜態的變量,常量)。其他一切都是在運行時創建的。 – 2012-04-22 09:16:52

+0

謝謝大衛,你的意思是字符串文字數字文字? – user1349313 2012-04-22 09:19:02

0

不,const int a=42; // a是在編譯時創建的,而不是在運行時創建的。