求解释为什么同样是改引用,但是类中的引用的指涉不变化, 而类外的就变化

JayMa_ 2014-10-24 05:15:12
#include <iostream>
#include <string>

using namespace std;
class Test
{
public:
Test(string &a) : str(a){}
Test& operator=(const Test& rhs)
{
str = rhs.str;
return *this;
}
string &str;
};


int main()
{
string str1("I Love China");
string str2("I Hate America");
string &r_str1 = str1;
string &r_r_str1 = r_str1;
r_str1 = "I Love China forever";
r_r_str1 = "I'm MJ";
cout << r_str1 << endl;

cout << str1 << endl;
cout << r_r_str1 << endl;
Test t(str1);
Test t2(str2);
t = t2;

cout << t.str << endl;
t.str = "abc";
cout << str2 << endl;


}
...全文
99 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
superf3 2014-10-25
  • 打赏
  • 举报
回复
Test& operator=(const Test& rhs) { str = rhs.str; //此语句是把 字符串赋给 str;不是把引用赋给它; 引用是在声明引用对象时就必须赋值,才会引用赋值的对象。 return *this; } 关键要理解 引用变量的初始化
罗博士 2014-10-24
  • 打赏
  • 举报
回复
t.str是str1的引用 不关str2的事
铖邑 2014-10-24
  • 打赏
  • 举报
回复
没有任何问题啊,楼主看清楚了吗?

64,654

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧