Может ли класс инициализировать свои непосредственные базовые классы в своем списке инициализации членов?

Следующий код взят из Руководство пользователя стандартной библиотеки Apache C ++

class DerivedOutputStream : public std::ostream {
public:
DerivedOutputStream():
std::ios(0), std::ostream(&dsb) {}        //1
// ...
private:
DerivedStreamBuf dsb;
// ...
};

Обратите внимание, что std::ios не непосредственный базовый класс DerivedOutputStream, но он появляется в списке инициализации члена.

Я думаю, что это не правильно, не так ли?

1

Решение

Это правильно, если это виртуальный базовый класс. Виртуальные базы инициализируются из самого производного класса.

3

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector