[英]Initialize class member variables in C++ 11
考慮以下類定義:
class C {
public:
int i = 9;
const int j = 2;
};
編譯時(不使用標志來啟用C ++ 11)(使用g ++,例如g++ -o test test.cpp
),編譯器會抱怨成員變量的初始化。 但是,使用-std=c++11
可以正常工作。
為什么在C ++ 11中更改了此規則? 以這種方式初始化成員變量是否被視為不良做法?
在聲明時初始化非靜態數據成員不僅是“不好的做法”; 在 C ++ 11之前根本根本不可能。
等效的C ++ 03代碼為:
class C
{
public:
C() : i(9), j(2)
{
}
int i;
const int j;
};
以防萬一: 構造函數中奇怪的冒號成員語法是什么?
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.