C 列表初始化

2021-07-02 16:55:08 字數 675 閱讀 3033

在c++11中,使用花括號來初始化變數得到全面的應用,也可以用花括號來對變數賦值。當用於內建型別變數時,這種初始化的乙個重要特點是如果使用列表初始化且初始值存在丟失資訊的風險,編譯器將報錯。

int _tmain(int argc, _tchar* argv)

; int b = ;

int c(ld);

int d = ld;

return 0;

}

編譯將得到以下錯誤:

(11): error c2397: 從「long double」轉換到「int」需要收縮轉換

(11): warning c4244: 「初始化」: 從「long double」轉換到「int」,可能丟失資料

(12): error c2397: 從「long double」轉換到「int」需要收縮轉換

(12): warning c4244: 「初始化」: 從「long double」轉換到「int」,可能丟失資料

(13): warning c4244: 「初始化」: 從「long double」轉換到「int」,可能丟失資料

(14): warning c4244: 「初始化」: 從「long double」轉換到「int」,可能丟失資料

可以看到編譯器拒絕了a和b的初始化請求。

c 初始化列表

與其他函式不同,建構函式除了有名字,引數列表和函式體之外,還可以有初始化列表,初始化列表以冒號開頭,後跟一系列以逗號分隔的初始化字段。struct foo 初始化列表 建構函式的兩個執行階段 從概念上來講,建構函式的執行可以分成兩個階段,初始化階段和計算階段,初始化階段先於計算階段 初始化階段 所有...

C 初始化列表

與其他函式不同,建構函式除了有名字,引數列表和函式體之外,還可以有初始化列表,初始化列表以冒號開頭,後跟一系列以逗號分隔的初始化字段。在c 中,struct和class的唯一區別是預設的克訪問性不同,而這裡我們不考慮訪問性的問題,所以下面的 都以struct來演示。struct foo 初始化列表 ...

C 初始化列表

與其他函式不同,建構函式除了有名字,引數列表和函式體之外,還可以有初始化列表,初始化列表以冒號開頭,後跟一系列以逗號分隔的初始化字段。struct foo 初始化列表 建構函式的執行可以分成兩個階段,初始化階段和計算階段,初始化階段先於計算階段。所有類型別 class type 的成員都會在初始化階...