ホームページ >バックエンド開発 >C++ >C の組み込み型には実際にデフォルトのコンストラクターがあるのでしょうか?

C の組み込み型には実際にデフォルトのコンストラクターがあるのでしょうか?

DDD
DDDオリジナル
2024-12-26 21:27:10435ブラウズ

Do Built-in Types in C   Actually Have Default Constructors?

組み込み型にはデフォルトのコンストラクターがありますか?

デフォルトにより int() が 0 になることを示唆する記事を読んだ後に疑問が生じました。コンストラクターが存在するため、プリミティブ型には本質的にコンストラクターが欠落しているという考えが生まれます。ただし、「TC PL」のセクション 10.4.2 は、組み込み型がデフォルトのコンストラクターを所有していると主張することを暗示しています。

Bjarne Stroustrup の応答

明らかな不一致について問い合わせたとき, Bjarne Stroustrup は、組み込み型には実際のコンストラクター呼び出しがないことを明らかにしました。代わりに、コンストラクターのような表記法がコンパイラーによって解釈されます。

技術的な回答

厳密に言えば、いいえ。組み込み型にはデフォルトのコンストラクターがありません。

機能上の考慮事項

実際のコンストラクターがないにもかかわらず、組み込み型を初期化するための構文はコンストラクターの呼び出しによく似ています。初期化時に中括弧 ({}) を使用すると、整数 (int{0}) のゼロ初期化と、括弧で囲まれた式 (int a{b}) からのコピーが可能になります。

結論

組み込み型にはデフォルトのコンストラクターがありませんが、その初期化構文と動作はその存在をエミュレートします。これらはデフォルトとコピーのコンストラクターを備えているようで、初期化と値の割り当てが可能です。この疑似コンストラクター メカニズムにより、初期化が簡素化され、コードの可読性が向上します。ただし、これらの型には真のコンストラクターが欠けていることを認識することが重要です。

以上がC の組み込み型には実際にデフォルトのコンストラクターがあるのでしょうか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。