Возможность «наследовать» один класс от другого - это языковая особенность. Это просто формальная, простая и сухая языковая функция, которая не привязана к конкретному приложению или конкретной модели использования. Это инструмент низкого уровня, который вы можете использовать для различных целей. И, чтобы ответить на ваш вопрос, совершенно законно наследовать от std::wstring
класса.
Однако следующим вопросом будет вопрос «почему». Почему вы хотите наследовать от std::wstring
?
Если вы разрабатываете свой код в рамках парадигмы ООП, то наследование публично от std::wstring
может быть не очень хорошей идеей, поскольку здесь может быть ключевое слово. Публичное наследование в ООП обычно подразумевает отношение IS-A в полиморфной иерархии классов. Класс std::wstring
не предназначен для того, чтобы быть полиморфным, поэтому публичное наследование от него может показаться довольно странным занятием.
Если вы разрабатываете свой код в рамках другой парадигмы, такой как, например, шаблонная метапрограммирование (TMP), тогда публичное наследование может быть вполне допустимым. Видите ли, в TMP публичное наследование служит совершенно другой цели, даже отдаленно не связанной с полиморфизмом и отношениями.
Другими словами, нет никакого способа дать конкретный ответ на ваш вопрос, не принимая во внимание общую картину. В любом случае, остерегайтесь «механических» ответов, например, «поскольку std::wstring
не имеет виртуального деструктора, вы не можете наследовать его, поскольку он сломается <переходите к иллюстрации с кодом> ». Такие рассуждения являются полностью поддельными, даже в рамках подхода ООП.