Это код cppcheck show waring: «[event.cpp: 20]: (производительность) Параметр функции ‘путь’ должен передаваться по ссылке».
void
event::set_path(const std::string path)
{
this->_path = path;
}
но другой код, включая строковый параметр, не показывает это предупреждение, например:
int
watcher::init_watch(const struct stat *sb, std::string path, bool linked)
{
int wd;
....
}
Зачем?
Потому что это должно! Нет смысла передавать константную копию, вы все равно не можете ее изменить, так зачем копировать. В худшем случае потребуется выделить память для новой строки, а затем скопировать строку по одному байту за раз. В лучшем случае это может сделать некоторую магию подсчета внутренних ссылок, но если вы просто передали ее по ссылке, то вы, самое большее, копируете один указатель на новую точку в стеке. проходить мимо const std::string& path
— Это будет намного быстрее.
Параметр пути в init_watch
следует также передавать по константной ссылке, потому что это тоже сделает копию без причины.
Других решений пока нет …