私は効果的なC++を読んでいて、初期化リストの前述の利点の1つを本当に理解できませんでした。私が理解していることから、初期化リストは、特に不要なデフォルトコンストラクターの呼び出しを回避するのにも役立つということです。それで、私がそのような簡単なコード例を作成したことをテストするために
class base
{
public:
base()
{
std::cout << "Default Constructor called \n";
}
base (int i)
{
std::cout << "Int constructor called \n";
}
};
class der : public base
{
private:
base b;
public:
der(int i):b(i)
{
std::cout << "Derived constructor called \n";
}
};
void main()
{
der d(12);
}
ここでは、intコンストラクターのみが呼び出され、代わりに基本クラスの両方のコンストラクターが呼び出されると想定していました。誰かがこの概念を明確にしていただけませんか。