可能性の重複:記号:
What does a colon following a C++ constructor name do?構造体コンストラクタ構文
私はオンラインの以下の例は、しかし、コンストラクタの構文は少し、特に私を混乱させるました。誰も私に簡単な説明を教えてくれませんか?ありがとう。
struct TestStruct {
int id;
TestStruct() : id(42)
{
}
};
可能性の重複:記号:
What does a colon following a C++ constructor name do?構造体コンストラクタ構文
私はオンラインの以下の例は、しかし、コンストラクタの構文は少し、特に私を混乱させるました。誰も私に簡単な説明を教えてくれませんか?ありがとう。
struct TestStruct {
int id;
TestStruct() : id(42)
{
}
};
コンストラクタは、それが呼ばれていたときに42
にid
を初期化します。初期化リストと呼ばれています。あなたのコンストラクタの唯一の目的は、メンバ変数
struct TestStruct {
int id;
double number;
TestStruct(int anInt, double aDouble) : id(anInt), number(aDouble) { }
};
を初期化したとき
あなたの例では
、それはあなたにもいくつかのメンバーと、それを行うことができます
struct TestStruct {
int id;
TestStruct()
{
id = 42;
}
};
と同等です
struct TestStruct {
int id;
double number;
TestStruct() : id(42), number(4.1)
{
}
};
それは便利です
「同じこと」はちょっとひどいです。誤解を招く –
合意して編集:) – Vache
クール、ありがたいですが、それは "有用"なのではなく、ベースのサブオブジェクト、定数、または参照など、非自明に初期化されなければならない変数にとっては絶対必要です。 –
これはコンストラクタの初期化リストです。あなたはここでそれについての詳細を学ぶことができます[?C++のコンストラクタ名を、次のコロンは何をするん]
http://www.learncpp.com/cpp-tutorial/101-constructor-initialization-lists/
の可能複製(http://stackoverflow.com/questions/1272680/what-does-a -colon-following-ac-constructor-name-do)を指定します。また、重複のリストも参照してください。[ここ](http://stackoverflow.com/questions/3504215/what-does-the-colon-mean-in-a-constructor) –