[解決済み] コンストラクタのコロンメンバー(" : ")の変な構文は何ですか?
2022-03-23 21:26:36
質問
最近、次のような例を見かけました。
#include <iostream>
class Foo {
public:
int bar;
Foo(int num): bar(num) {};
};
int main(void) {
std::cout << Foo(42).bar << std::endl;
return 0;
}
この不思議な
: bar(num)
とはどういう意味でしょうか?なんとなくメンバ変数を初期化するようですが、この構文は見たことがありません。関数やコンストラクタの呼び出しのように見えますが、この構文では
int
? 私には意味不明です。おそらく、誰かが私を啓発することができます。ところで、普通のC++の本には載っていないような、このような難解な言語機能は他にもあるのでしょうか?
どのように解決するのですか?
それは メンバー初期化リスト . これに関する情報は、どの C++の良書 .
ほとんどの場合、メンバー初期化リストですべてのメンバーオブジェクトを初期化する必要があります。 (ただし、FAQの末尾に記載されている例外に注意してください)。
FAQのエントリから得られるポイントは、以下の通りです。
他の条件が同じであれば、代入よりも初期化リストを使った方がコードの実行速度が速くなります。
関連
-
[解決済み】C++のGetlineの問題(オーバーロードされた関数 "getline "のインスタンスがない
-
[解決済み】クラスのコンストラクタへの未定義参照、.cppファイルの修正も含む
-
[解決済み] JavaScriptで "use strict "は何をするのか、その根拠は?
-
[解決済み] explicit キーワードの意味は?
-
[解決済み] ルール・オブ・スリーとは?
-
[解決済み] コピーアンドスワップ慣用句とは?
-
[解決済み] C#でベースコンストラクタを呼び出す
-
[解決済み] const int*、const int * const、int const *の違いは何ですか?
-
[解決済み] コンストラクタ内の仮想メンバー呼び出し
-
[解決済み】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 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】コンストラクターでのエラー:識別子を期待されますか?
-
[解決済み】getline()が何らかの入力の後に使用されると動作しない 【重複あり
-
[解決済み】C++エラーです。"配列は中括弧で囲まれたイニシャライザーで初期化する必要がある"
-
[解決済み】C++ 式はポインタからオブジェクトへの型を持っている必要があります。
-
[解決済み】Cygwin Make bash コマンドが見つかりません。
-
[解決済み】エラー:strcpyがこのスコープで宣言されていない
-
[解決済み] 式はクラス型を持つ必要があります。
-
[解決済み】指定範囲内の乱数で配列を埋める(C++)
-
[解決済み】標準ライブラリにstd::endlに相当するタブはあるか?
-
[解決済み】演算子のオーバーロード C++; <<操作のパラメータが多すぎる