下面的代码是正确的混乱关于C++类参考
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&
类型分配,为什么把它们放到类会引起编译错误? (gcc版本4.7.1)
错误信息是
non-static reference member 'std::string& A::ma', can't use default assignment operator
我相信这是因为字符串传递到ctor(string a)的值,这是一个不允许初始化字符串ref的临时对象? – 2013-02-22 10:35:12
我改变了,但它仍然有错误 – zhenyuyang 2013-02-22 10:48:04
@zhenyuyang请将错误的*确切*文本作为您的问题的补充发布; **不**在这里的评论。 – WhozCraig 2013-02-22 10:48:56