以下代码是正确的
string s1="abc";
string s2="bcd";
string &rs1=s1;
string &rs2=s2;
rs1=rs2;
cout<<rs1<<"----"<<rs2<<endl;
以下代码将编译错误:
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&
类型赋值,为什么放到class里面会导致编译错误呢?(gcc 版本 4.7.1 )
错误信息是
non-static reference member 'std::string& A::ma', can't use default assignment operator