É hora de abandonar a passagem de const std::string& em parâmetros de funções?
Olá a todos! Sou novo em C++ e vejo constantemente em livros e artigos antigos o conselho de passar strings em funções como const std::string&. Mas recentemente me deparei com uma discussão onde diziam que no C++11 e posteriores isso já não é uma boa prática. Dizem que, por causa da move semantics, é mais eficiente passar strings por valor do que por referência constante.
Estou completamente confuso. Aqui está um exemplo do meu código:
```cpp
void processData(const std::string& name) {
// ... algum trabalho com name, mas sem cópia
std::cout << name << std::endl;
}
void storeData(const std::string& name) {
// Aqui quero salvar name em um membro da classe
m_name = name; // isso é uma cópia?
}
```
O primeiro caso é apenas leitura da string. O segundo é salvar em um campo do objeto. const std::string& está realmente obsoleto? Quando devo usá-lo, e quando é melhor passar a string por valor (std::string)? Ou talvez deva usar std::string_view? Peço encarecidamente que expliquem de forma simples, com exemplos, qual opção é mais ideal em
No answers yet.
Faça login para deixar uma resposta