3

ブレースの初期化 (ありがたいことに、Visual Studio 2013 が実際にサポートしています) を使用しようとしていましたが、クラスでそれを行うと、何らかの理由で 2 セットの中かっこが必要になります。例えば:

class NumberGrabber {
    int number;
public:
    NumberGrabber() : number{ 5 }{}

    int getNumber() { return number; }
};

なぜ私が言う必要があるのですnumber { 5 }{}か?それは私には視覚的に意味がありません。

4

3 に答える 3

14

前者の中括弧のセットは の初期化子でnumberあり、後者はコンストラクターの本体を定義する複合ステートメントです。適切なフォーマットを使用すると、これがより明確になる場合があります。

NumberGrabber()
    : number{5}
{
}

それはもっと理にかなっていますか?

于 2013-07-24T13:20:23.023 に答える
3

コンストラクターは関数であり、関数定義には本体が必要です。{}空の関数本体です。

于 2013-07-24T13:22:38.923 に答える