4

ソースファイルをきれいに保つために、クラス内の一連のメンバーを初期化したいと考えています。ただし、オブジェクトはコンストラクターを介してのみ受け取る引数を取り、コンストラクターの初期化リストまたは代入を介してコンストラクターで初期化できます。(2 番目のオプションは確実に機能しません。) これは基本的にシナリオです。

ヘッダー内

class Foo
{

public:
    Foo(Pointer * ptr);

private:

    Pointer * ptr;
    Member m1{ptr, "SomeText"};
    Member m2{ptr, "SomeOtherText"};
}

CPPでは

Foo::Foo(Pointer*ptr) : 
    ptr(ptr) 
{
    // ...
}   

ptrここでの質問は次のとおりです。標準はとm1/の間の初期化の順序について何かを述べていm2ますか? 明らかに、このコードは が と の前に初期化された場合にのみ機能しptrます。m1m2

4

3 に答える 3