Следующий код является правильнымпутаница C++ ссылки в классе
string s1="abc";
string s2="bcd";
string &rs1=s1;
string &rs2=s2;
rs1=rs2;
cout<<rs1<<"----"<<rs2<<endl;
И thefollowing код будет ошибка компиляции:
class A
{
public:
A(string& a):ma(a) { }
string& ma;
};
string s1="abc";
string s2="bcd";
A oa(s1);
A ob(s2);
oa=ob;
cout<<oa.ma<<"----"<<ob.ma<<endl;
Все вышеперечисленное является string&
назначение типа, поэтому поставить их в класс вызовет ошибка компиляции? (GCC версии 4.7.1)
Информация об ошибке
non-static reference member 'std::string& A::ma', can't use default assignment operator
Я считаю, это потому, что строка передается в ctor (строка a) по значению, который является временным объектом, которому не разрешено инициализировать строку ref? –
Я изменяю это, но он все еще имеет ошибку – zhenyuyang
@zhenyuyang Пожалуйста, укажите * точный * текст ошибки в качестве дополнения к вашему вопросу; ** не ** здесь в комментарии. – WhozCraig