В чем разница между 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).

Это то же самое, но это не то же самое.

Другие вопросы по тегам