В чем разница между const string & str и строкой const & str при передаче в качестве аргумента функции в C++
Я использую передачу по ссылке на константную строку в аргумент функции, как показано ниже:
class Super
{
void alignment(const string & str);
};
void Super::alignment(const string & str)
{
//do some stuff
}
Теперь, если я использую, как показано ниже, это дает тот же результат:
void Super::alignment(string const & str)
{
//do some stuff
}
В чем разница между этими двумя типами определений в C++?
2 ответа
Решение
const T&
а также T const&
семантически одно и то же точно. Как const T*
а также T const*
семантически одинаковы, но T const*
а также T* const
разные.
Ключевое слово const остается ассоциативным, но в "const string &str", так как нет левого ключевого слова для квалификации, оно применяется к слову справа от него (так что string).
Это то же самое, но это не то же самое.