Cpp 構造体 クラスの初期化

提供:yonewiki
2022年9月26日 (月) 11:07時点におけるYo-net (トーク | 投稿記録)による版 (ページの作成:「C++に戻る <table class="mbox-small" style="border:1px solid #aaa; background-color:#f9f9f9; width:22em;" id="RealTitleBanner"> <tr> <td style="width:1px;"></td> <td class="mbox-text plainlist" style="">本来の表記は「<b><span id="RealTitle" style="font-size:large;">C++(Cpp) 構造体 クラスの初期化</span></b>」です。この記事に付けられた題名は{{記事名の制約}}から不正確なものとなっ…」)
(差分) ← 古い版 | 最新版 (差分) | 新しい版 → (差分)

C++に戻る


本来の表記は「C++(Cpp) 構造体 クラスの初期化」です。この記事に付けられた題名はテンプレート:記事名の制約から不正確なものとなっています。

※このページではC++にのみ存在する機能として、記事タイトルがC++ 構造体 クラスの初期化になっています。

構造体 クラスの初期化

 あんまり知られていないやり方かもしれませんが、C++では構造体やクラスを定義した時にメンバ変数の後ろに「:」(コロン)を付けて初期化することが出来ます。こういうときの構文としての名前がついているのかと思ったんですけど、あまりはっきりとはしていません。強いて言うならば、メンバ変数の初期化子 : という名前なのかなと思います。

 使い方のサンプルとしては

Sample.h

struct Sample{
    int iValue : 10;
    CSampleClass objCSampleClass : objCSampleInitClass;
}

CExample objCExample : objCExampleInitValue;

 構造体の方はなんとなく理解しやすい記述に見えると思いますが、最後の1行での使い方だとなんじゃこれ?って思いやすいです。これも初期値設定です。

 以下のように = を使った記述の方が分かりやすいかもしれません。

Sample.h

struct Sample{
    int iValue = 10;
    CSampleClass CSampleClass = objCSampleInitClass;
}

CExample objCExample = objCExampleInitValue;

 初期化と代入を明確に切り分けたい場合に : を使うのかもしれない。と、思ってみたり。  

C++に戻る