2011-08-04 21 views
2

什麼標題,假設我有一個圖是這樣的:C++的std ::地圖Intristic類型初始化使用[]操作

std::map<int, int> m; 

,如果我寫了下面的

cout<<m[4]; 
  • 什麼會是結果(0,未初始化,編譯器特定)?
  • 同樣適用於指針(即std :: map)嗎?

編輯:
爲了澄清,在這個問題上,我尋求標準行爲。

由於提前, 傑姆

回答

3

的值將是什麼類型的默認構造函數創建的,因爲新的景點正在使用T()填補。對於int,這是0。你可以看到自己這一點:

#include <iostream> 

using namespace std; 

int main() { 
    cout << int() << endl; // prints 0 
} 

初始化類像這樣的空括號被稱爲值初始化(見下文ildjarn的評論)。

+0

迂迴地說,這被稱爲_value-initialization_。 – ildjarn

+0

指針怎麼樣?有任何想法嗎? –

+0

@ildjarn究竟哪個部分被稱爲? –