У меня есть старый класс строк, который я написал несколько лет назад (до того, как стандартная библиотека стала настолько стандартной).Это работает хорошо, но я полагаю, что я должен перейти в 21-й век на моем последнем проекте.Мне было интересно, насколько эффективен стандартный строковый класс библиотеки.Например, если я передаю строку в функцию или просто назначаю ее другой строке, она копирует данные или просто копирует указатель на данные.
В моем старом классе я держал счетчик ссылок с данными и просто копировал указатель.Если бы я сделал что-то, что изменило строку на месте, я бы проверил, была ли ее ссылка 1. Если это было 1, я мог бы использовать ту же самую область данных строки, предполагая, что строка не превысила свой первоначальный размер.Если бы оно было больше 1, я бы скопировал строковые данные перед его изменением.
Делает ли класс стандартной библиотеки что-то похожее (или, возможно, лучше), или копирует данные каждый раз, когда вы передаете строки.Я думаю, это может зависеть от реализации.Я в настоящее время разрабатываю для Windows, хотя я, вероятно, буду портировать его позже.Спасибо