РЕДАКТИРОВАТЬ: Я недостаточно внимательно прочитал ваш вопрос.Проигнорируйте следующее (извините)
Бесполезно наследовать от std :: string (и даже если бы вы могли, детали реализации убили бы вас).Если вы действительно хотите это сделать, вам придется создать ABC, который предоставляет тот же интерфейс, что и std :: string (а затем, вероятно, предоставить класс, наследующий от него, который перенаправляет все вызовы к немуна внутреннюю std :: string), измените все ссылки на std :: string в вашем текущем коде на ссылки вашего нового класса, а затем создайте другой класс, содержащий вашу специальную строку.
В качестве альтернативы, вы можете достичьто же самое с использованием шаблонов и специализаций, а также избежание накладных расходов на виртуальные вызовы.
Короче говоря, вы не можете реально предоставить std :: string, если не создадите строку на лету из метода tostdstring или чего-то еще.