Por que as strings não são imutáveis em C++?

A mutabilidade de strings é um assunto de grande discussão entre os designers de linguagens de programação. Algumas linguagens como Java, C# e Python fazem das string imutáveis para tratar como qualquer outro tipo nativo, como inteiro. Um inteiro 10 não pode ser mutado. Igual a string ‘hello’ que também não pode ser mutado se for um tipo nativo.

Em C++, por um longo tempo string significava char * ou char []. Esse são bytes na memória terminados por null e, portanto, muito modificável. A vantagem é a velocidade e a falta de qualquer sobrecarga extra sobre o código gerado pelo compilador ou em tempo de execução – principais objetivos da linguagem. Quando std::string veio em 1998, o objetivo principal era ter quase o mesmo comportamento de char *, mas mais seguro. str::string é somente um wrapper envolta de um array de caracteres e não um tipo nativo. Então std::string permanece mutável. Do ponto do vista do sistema parece ser a escolha certa, entretanto para programação thread a imutabilidade é uma grande ferramenta.

const std::string s = "abc";

You may also like...