いくつかの引数を取るコンストラクターがあります。リストされた順序で構築されていると想定していましたが、逆に構築されているために中止されたようです。引数を逆にすると、プログラムは異常終了しました。これは私が使用している構文の例です。この場合、a_はb_の前に初期化する必要があります。施工順序は保証できますか?
例えば
class A
{
public:
A(OtherClass o, string x, int y) :
a_(o), b_(a_, x, y) { }
OtherClass a_;
AnotherClass b_;
};
6
あなたはコンストラクターの引数について尋ねていると言いますが、それらはコンストラクターに到達する前に評価され、それらは不特定のコンパイラーによって決定された順序で評価されます。しかし、あなたは本当に初期化リストの順序について質問しているので、質問のタイトルを変更しました。
—
ロブ・ケネディ