Что делает «&» в объявлении C ++?

Я парень на C и пытаюсь понять код на C ++. У меня есть следующее объявление функции:

int foo(const string &myname) {
  cout << "called foo for: " << myname << endl;
  return 0;
}

Чем сигнатура функции отличается от эквивалентной C:

int foo(const char *myname)

Есть ли разница между использованиемstring *myname противstring &myname? В чем разница между& в C ++ и* в С указывать указатели?

По аналогии:

const string &GetMethodName() { ... }

Что это& делать здесь? Есть ли сайт, который объясняет, как& используется по-разному в C против C ++?

Ответы на вопрос(7)

Ваш ответ на вопрос