Вы можете использовать в инициализаторах членов класса, чтобы указать значения по умолчанию для членов класса.
struct D: public B {
D(int b1, int p);
D(int b1, int b2, int p);
int p1;
float p2;
double p3;
std::string p4;
};
можно изменить на
struct D: public B {
D(int b1, int p);
D(int b1, int b2, int p);
int p1;
float p2{SomeFunc()};
double p3{SomeOtherFunc() - 42};
std::string p4{"abc"};
};
, и тогда вам это не нужноперечислите эти члены в списке инициализации членов, если у вас все в порядке, имея значение по умолчанию.Это делает конструкторы похожими на
D::D(int b1, int p): B(b1), p1(p) {}
D::D(int b1, int b2, int p): B(b1, b2), p1(p) {}