[解決済み] C++のコンストラクタ名の後にコロンを付けるとどうなりますか?重複] [重複
2022-12-09 03:56:11
質問
このコンストラクタのコロン演算子(":")は何をするのでしょうか? と等価なのでしょうか?
MyClass(m_classID = -1, m_userdata = 0);
?
class MyClass {
public:
MyClass() : m_classID(-1), m_userdata(0) {
}
int m_classID;
void *m_userdata;
};
どのように解決するのですか?
これは 初期化リスト であり、コンストラクタの実装の一部です。
コンストラクタのシグネチャは
MyClass();
つまり、コンストラクタはパラメータ無しで呼び出せるということです。これにより、このコンストラクタは
デフォルトコンストラクタ
を書いたときにデフォルトで呼び出されるようになります。
MyClass someObject;
.
部分
: m_classID(-1), m_userdata(0)
というのは
初期化リスト
. これは、オブジェクトのいくつかのフィールドを未定義のままにするのではなく、選択した値で初期化する方法です(必要であれば、それらすべてを)。
初期化リストを実行した後、コンストラクタ本体(この例ではたまたま空になっています)が実行されます。その内部ではさらに多くの代入を行うことができますが、いったん入力すると、すべてのフィールドはすでに初期化されています。ランダムで指定されていない値、または初期化リストで選択した値のどちらかになります。つまり、コンストラクタ本体で行う代入は、初期化ではなく、値の変更になります。
関連
-
[解決済み】'cout'は型名ではない
-
[解決済み】「std::operator」で「operator<<」にマッチするものがない。
-
[解決済み] explicit キーワードの意味は?
-
[解決済み] Java で、あるコンストラクタを別のコンストラクタから呼び出すにはどうすればよいですか?
-
[解決済み] ルール・オブ・スリーとは?
-
[解決済み] コピーアンドスワップ慣用句とは?
-
[解決済み] C#でベースコンストラクタを呼び出す
-
[解決済み] あるコンストラクタを別のコンストラクタから呼び出す
-
[解決済み] ベースクラスのコンストラクタを呼び出す際のルールは?
-
[解決済み】C/C++の"-->"演算子とは何ですか?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】構造体のベクター初期化について
-
[解決済み] [Solved] インクルードファイルが開けません。'stdio.h' - Visual Studio Community 2017 - C++ Error
-
[解決済み] gdbを使用してもデバッグシンボルが見つからない
-
[解決済み】VC++の致命的なエラーLNK1168:書き込みのためにfilename.exeを開くことができません。
-
[解決済み】デバッグアサーションに失敗しました
-
[解決済み】変数やフィールドがvoid宣言されている
-
[解決済み】エラー。引数リストに一致するコンストラクタのインスタンスがない
-
[解決済み] C++、コンストラクタの後のコロンはどういう意味ですか?[重複]です。
-
[解決済み] ルール・オブ・スリーとは?
-
[解決済み] コンストラクタのコロンメンバー(" : ")の変な構文は何ですか?