[解決済み】C++構造体のメンバはデフォルトで0に初期化されますか?
2022-04-06 13:09:38
質問
私はこれ
struct
:
struct Snapshot
{
double x;
int y;
};
欲しい
x
と
y
はデフォルトで0になるのでしょうか、それともしなければならないのでしょうか。
Snapshot s = {0,0};
その他、構造をゼロにする方法とは?
解決するには?
構造体を初期化しないとNULLにならない。
Snapshot s; // receives no initialization
Snapshot s = {}; // value initializes all members
2番目はすべてのメンバーを0にし、1番目は指定されない値のままにしておきます。これは再帰的であることに注意してください。
struct Parent { Snapshot s; };
Parent p; // receives no initialization
Parent p = {}; // value initializes all members
2つ目は
p.s.{x,y}
をゼロにします。構造体の中にコンストラクタがある場合は、これらの集約型イニシャライザ リストを使用することはできません。その場合は、これらのコンストラクタに適切なイニシャライゼーションを追加する必要があります。
struct Snapshot {
int x;
double y;
Snapshot():x(0),y(0) { }
// other ctors / functions...
};
xとyの両方を0に初期化します。
x(), y()
を使えば、型に関係なく初期化することができます。これは値の初期化であり、通常は適切な初期値(intなら0、doubleなら0.0、ユーザ定義のコンストラクタを持つ型ならデフォルトコンストラクタの呼び出し、など)を生成します。これは、構造体がテンプレートの場合、特に重要です。
関連
-
[解決済み】C++コンパイルタイムエラー:数値定数の前に期待される識別子
-
[解決済み】C++の変数はイニシャライザーを持っているが、不完全な型?
-
[解決済み】デバッグアサーションに失敗しました。C++のベクトル添え字が範囲外
-
[解決済み】浮動小数点数の乱数生成
-
[解決済み] 要素ごとの加算は、結合ループよりも分離ループの方がはるかに高速なのはなぜですか?
-
[解決済み] コピーアンドスワップ慣用句とは?
-
[解決済み] C++11では、標準化されたメモリモデルが導入されました。その意味するところは?そして、C++プログラミングにどのような影響を与えるのでしょうか?
-
[解決済み] C++のstructとclassの違いは何ですか?
-
[解決済み】画像処理。コカ・コーラ缶」認識のためのアルゴリズム改良
-
[解決済み】高放射能環境下で使用するアプリケーションのコンパイルについて
最新
-
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 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】コンストラクターでのエラー:識別子を期待されますか?
-
[解決済み】クラステンプレートの引数リストがない
-
[解決済み】C++エラーです。"配列は中括弧で囲まれたイニシャライザーで初期化する必要がある"
-
[解決済み】C++でランダムな2倍数を生成する
-
[解決済み】文字列関数で'char const*'のインスタンスを投げた後に呼び出されるterminate [閉店].
-
[解決済み】Enterキーを押して続行する
-
[解決済み】VC++の致命的なエラーLNK1168:書き込みのためにfilename.exeを開くことができません。
-
[解決済み】変数やフィールドがvoid宣言されている
-
[解決済み】'std::cout'への未定義の参照
-
[解決済み】C++ 構造体の初期化