doビルトインタイプには、ビルトインタイプがデフォルトのコンストラクターを持っていると主張している声明にもかかわらず、c?
のデフォルトのコンストラクターがあります。 「いいえ」
推論
int x0(5)として表示されます。 //デフォルトのコンストラクターのように見えます int x1 {5}; //デフォルトの初期化のための新しい構文
int x0(5); // Looks like a default constructor int x1{5}; // New syntax for default initializationこれらの式はコンストラクター呼び出しを模倣しますが、実際には値の初期化を呼び出します。値の初期化は、プリミティブタイプをタイプによって決定されるデフォルト値に初期化するメカニズムです。これは、ゼロイナイト化の新しい構文で特に顕著です:
int z0 = int(); //デフォルトのコンストラクターのように表示されます int z1 = int {}; //ゼロイナイト化のための新しい構文
これらの式はデフォルトのコンストラクターと同様に動作し、変数をデフォルト値に初期化します(この場合、0)。組み込みのタイプには従来の意味でのコンストラクターがありませんが、初期化の動作に基づいてコンストラクターがあると概念的に考慮されていることを明らかにしました。それにもかかわらず、彼らの初期化の構文は、そのようなコンストラクターの幻想を作成し、まるでそうであるかのように初期化できるようにします。この区別は、Cの初期化メカニズムのニュアンスとその構文の柔軟性を強調しています。
免責事項: 提供されるすべてのリソースの一部はインターネットからのものです。お客様の著作権またはその他の権利および利益の侵害がある場合は、詳細な理由を説明し、著作権または権利および利益の証拠を提出して、電子メール [email protected] に送信してください。 できるだけ早く対応させていただきます。
Copyright© 2022 湘ICP备2022001581号-3