Обычное правило по-прежнему применяется: класс не предназначен для наследования, и его деструктор не является виртуальным, поэтому, если вы когда-нибудь перейдете к базовому классу std :: string и позволите объекту быть уничтоженным, ваш деструктор производного класса не будет вызван.
Если вы можете гарантировать, что этого никогда не произойдет, продолжайте.
В противном случае вы можете сделать std::string
членом вашего класса, а не базового класса. или вы могли бы использовать личное наследование. Проблема с этим подходом состоит в том, что вам пришлось бы повторно реализовать строковый интерфейс, чтобы класс можно было использовать как строку.
Или вы можете просто определить свой класс, чтобы предоставить функцию getString()
, которая возвращает внутренний объект std::string
. Тогда вы все равно можете передать свой собственный класс, и компилятор будет жаловаться, если вы попытаетесь передать std::string
, но внутренняя строка доступна, когда вам это нужно. Это может быть лучшим компромиссом.