class A // abstract class
{
protected:
int m_iA;
int m_iB;
int m_iC;
int m_iD;
int m_iE
~A();
};
class B : public A // abstract class
{
protected:
double m_dA;
double m_dB;
double m_dC;
double m_dD;
~B();
};
class C : public B
{
public:
C(int iA, int iB, int iC, int iD, int iE, double dA, double dB, double dC, double dD)
{
}
}
質問>あなたは上記の例を見ることができるように、基本クラスA
とB
の両方が多くのメンバ変数が含まれています。クラスC
からこれらの初期値をベースクラスまで渡すより良い解決策は何ですか?これは基本クラスのメンバー変数を初期化するのに適した場所ですか?
Method1>基本クラスメンバ変数をクラスC
のコンストラクタ本体の内部に直接割り当てます。
方法2>コンストラクタのすべての初期値をC
からB
に、そして最後にA
に渡します。
は
言及しなかった3つ目のオプションがあります。A型とB型の完全に構築されたオブジェクトをCのコンストラクタに渡します(const参照)。 –