ホームページ > バックエンド開発 > C++ > C コンストラクターはメンバー初期化子リストで配列を直接初期化できますか?

C コンストラクターはメンバー初期化子リストで配列を直接初期化できますか?

Susan Sarandon
リリース: 2024-11-14 12:59:02
オリジナル
513 人が閲覧しました

Can C   Constructors Initialize Arrays Directly in Member Initializer Lists?

コンストラクター初期化子リストでの配列メンバーの初期化

メンバー初期化子リストを使用してコンストラクターで配列を初期化できないため、基礎となるルールと可能性について疑問が生じます。

C 03 標準および集約の初期化

C 03 標準では、メンバー初期化子リストで配列を含む集約型の直接初期化を使用することを禁止しています。直接初期化とは、提供されたコード スニペットに見られるように、かっこを付けてコンストラクターを直接使用することを指します。

ソリューションとしての Boost::array

別のアプローチは、使用することです。配列をカプセル化する構造体。構造体内でコンストラクターを定義すると、オブジェクトの作成時に配列を初期化できます。これは、Boost::array ライブラリで採用されているアプローチと似ています。

C 11 リストの初期化

C 11 ではリストの初期化が導入され、集計の直接初期化が可能になりました。 、配列を含むメンバー初期化子リスト。ただし、質問に記載されている構文は正しくありません。リストの初期化を使用するには、配列要素を中かっこで囲む必要があります。

class C
{
public:
    C() : arr{1, 2, 3} {}
};
ログイン後にコピー

この構文は、コンストラクター内の arr 配列を正しく初期化します。

以上がC コンストラクターはメンバー初期化子リストで配列を直接初期化できますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート