Я решил посмотреть, сделает ли назначение ссылки на член ссылкой. Я написал следующий фрагмент, чтобы проверить это. Есть простой класс 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;
}