Принято считать, что стандартная библиотека C ++ обычно не предназначена для расширения с использованием наследования. Конечно, я (и другие) критиковал людей, предлагающих уйти из таких классов, как std::vector. Однако этот вопрос: исключения c ++, может ли what () быть NULL? сделано Я понимаю, что есть по крайней мере одна часть стандартной библиотеки, которая предназначена для такого расширения - std::exception.
Итак, мой вопрос состоит из двух частей:
Существуют ли какие-либо другие классы стандартной библиотеки, производные от которых?
Если кто-то является производным от класса стандартной библиотеки, такого как
std::exception, привязан ли он к интерфейсу, описанному в стандарте ISO? Например, будет ли программа, в которой используется класс исключения, функция-членwhat(), не возвращающая NTBS (например, возвращающий нулевой указатель), соответствовать стандарту?