-3

クラス Library があり、別のクラス Shelf のメンバー オブジェクト Shelf1 が含まれています。

Class Shelf にはいくつかの変数があります。

class Shelf {
int height;
int width;
int materialType;
String shelfName;
}

Library では、Library 宣言でメンバー オブジェクト shelf1 を初期化します。

Shelf shelf1{100, 200};
Shelf shelf2{100, "fiction"};

それらは機能しますか? また、リストの初期化は変数の順序に対してどのように機能しますか?

[更新] これらのコードは、私の質問を説明するためのものです (実世界にも同様のコードがありますが、ここに置くには複雑すぎるため、質問を単純化します)。

4

1 に答える 1

3

クラスが集計の場合、変数はクラス内の宣言の順序に従って初期化されます。あなたのクラスが集約である(そしてそのような直接リストの初期化を使用できる)ためには、要件の1つは、すべてのメンバーがそうでなければならないということですpublic(これをキャッチしてくれた@Praetorianに感謝します)。そうでなければ、あなたのクラスは集約ではなく、コードが勝ちましたコンパイルしないでください。したがって、メンバーが であると仮定するとpublic

Shelf shelf1{100, 200}; 

とで初期化heightします。100width200

Shelf shelf2{100, "fiction"};

width2 番目のメンバーは C 文字列ではないため、コンパイル時エラーです。

詳細はこちら

于 2015-05-07T17:53:21.617 に答える