20 Library introduction [library]

20.5 Library-wide requirements [requirements]

20.5.5 Conforming implementations [conforming]

20.5.5.11 Derived classes [derivation]

Реализация может наследовать любой класс в стандартной библиотеке C ++ от класса с именем, зарезервированным для реализации.

Некоторые классы, определенные в стандартной библиотеке C ++, должны быть производными от других классов стандартной библиотеки C ++. Реализация может получить такой класс непосредственно из требуемой базы или косвенно через иерархию базовых классов с именами, зарезервированными для реализации.

В любом слючае:

  • Каждый базовый класс, описанный как, virtual должен быть виртуальным;

  • Каждый базовый класс, не указанный как virtual , не должен быть виртуальным;

  • Если явно не указано иное, типы с разными именами должны быть разными типами.182

Все типы, указанные в стандартной библиотеке C ++, не должны бытьfinal типами, если не указано иное.

Из этого правила есть неявное исключение для типов, которые описываются как синонимы для основных интегральных типов, таких как size_­t и streamoff.