2014-04-06 68 views
0

在c + +中的自動命令11是靜態綁定(打字)或動態綁定?自動在c + + 11是靜態類型或動態類型

即,如果我有此代碼

auto x = 5; 

將編譯器決定該「x」是一個int或將它運行時descovered?

另外,以下代碼中x的類型是什麼?

auto x = 5, y = 4.5 
+0

**靜態**。編譯器會從你分配的內容中推導出它。 – OMGtechy

+2

對於'auto x = 5,y = 4.5;',g ++給出:'錯誤:'auto'的不一致推導:'int',然後'double'' – Jarod42

+0

這是**類型推理**,自動替換spelled-在rhs上表達結果的名稱。 – berkus

回答

8

這就是所謂的類型推斷。鍵入仍然是靜態,但是讓編譯器確定表達式的類型。

具體爲auto x = 5;,編譯時爲is translated to int x = 5;。出於這個原因,你總是在初始化時提供一個明確的表達式。例如auto x;wouldn't work