Анализатор обнаружил код, который потенциально можно оптимизировать. В коде присутствует избыточное создание объекта типа 'std::string', от которого можно избавиться.
У объекта класса 'std::string' с помощью функции 'c_str()' берется указатель на массив символов. Затем из этих символов конструируется новый объект типа 'std::string'. Например, это возможно, если неоптимальное выражение является:
Рассмотрим пример для случая с вызовом функции:
void foo(const std::string &s) { .... } .... void bar() { std::string str; .... foo(str.c_str()); }
Улучшить код очень просто - достаточно убрать вызов метода 'c_str()'. Рассмотрим пример упрощенного кода:
.... void bar() { std::string str; .... foo(str); }
Пример некорректного кода для оператора присваивания будет иметь вид:
std::string str; .... std::string s = str.c_str();
Пример некорректного кода для оператора 'return' будет иметь вид:
std::string foo(const std::string &str) { .... return str.c_str(); }
Исправить ошибку в этих случаях следует аналогично случаю для вызова функции.