Ответ 1
Глядя на документация libstdС++ Я нахожу (см. ссылку для получения дополнительной информации):
Строка выглядит так:
[_Rep]
_M_length
[basic_string<char>] _M_capacity
_M_dataplus _M_refcount
_M_p ----------------> unnamed array of char_type
Итак, да, он подсчитан. Кроме того, из обсуждения здесь:
Да, std::string в какой-то момент будет произведен отсчет без ссылок, но в качестве строки, не относящейся к ссылке, действительна также в С++ 98, одна вариант заключается в том, чтобы переключиться на строку без ref-count для обоих -std = С++ 98 и -std = С++ 11 режимов. Я не говорю, что произойдет, но это может быть.
Итак, кажется, что есть планы изменить его на соответствие (я не знаю, как продвигается прогресс).
Обновление
Как замечает emsr в комментариях, в настоящее время существует подсчетное число без ссылки, называемое vstring.h
, и, похоже, единственная причина, по которой он не заменил std::string
, - это совместимость с ABI. Здесь есть вопрос SO .