Переходя по ссылке к конструктору

Я решил посмотреть, сделает ли назначение ссылки на член ссылкой. Я написал следующий фрагмент, чтобы проверить это. Есть простой класс Wrapper с std :: string в качестве переменной-члена. Я беру константную строку & в конструкторе и назначаю ее общедоступной переменной-члену. Позже в методе main () я изменяю переменную-член, но строка , которую я передал конструктору, остается неизменной, почему? Я думаю, что в Java переменная изменилась бы, почему бы не в этом фрагменте кода? Как именно ссылки работают в этом случае?

#include <iostream>
#include <string>
using namespace std;

class Wrapper
{
public:
   string str;

   Wrapper(const string& newStr)
   {
      str = newStr;
   }
};

int main (int argc, char * const argv[]) 
{
   string str = "hello";
   cout << str << endl;
   Wrapper wrapper(str);
   wrapper.str[0] = 'j'; // should change 'hello' to 'jello'
   cout << str << endl;
}
26
задан rcplusplus 29 February 2012 в 21:35
поделиться