函数返回值问题

lhfx_313 2011-05-08 09:57:28

赋值函数
String& String::operate=(const String &assign)
{
if(this==&assign)
return *this;
char *p=new char[strlen(assign.m_data)+1];
strcpy(p,assign.m_data);
delete m_data;
m_data=p;
return *this; //这里返回的是*this的引用吗?
}



相加函数

String oparate+(const String &lh, const String &rh)
{
String temp;
temp.m_data=new char[strlen(lh.m_data)+strlen(rh.m_data)+1];
strcpy(temp.m_data,lh.m_data);
strcat(temp.m_data,rh.m_data);
return temp; // 这个函数如果改为返回引用的话,这里就应该返回一个指向局部对象temp的引用(即地址),可行吗?


...全文
85 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
lhfx_313 2011-05-08
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 sleepcat2010 的回复:]
this 是一个指针...*this是引用的值
[/Quote]
对this加*就是应用其指向的值,这和通常说的引用(以&表示)有什么不同吗?谢谢,刚入门这个,多谢回答~
SleepCat2010 2011-05-08
  • 打赏
  • 举报
回复
this 是一个指针...*this是引用的值
lhfx_313 2011-05-08
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 hnuqinhuan 的回复:]
第一个是返回tihs的引用 可以实现连续赋值 好比 a = b = c;这个等式就是正确的
第二个如果改用引用的话就是返回局部对象的引用 这就是我们为什么双目运算符不赞成使用友元的原因
[/Quote]
第一个返回的是this引用还是*this引用这两个有区别吗?引用不是都得带&吗?
無_1024 2011-05-08
  • 打赏
  • 举报
回复
第一个是返回tihs的引用 可以实现连续赋值 好比 a = b = c;这个等式就是正确的
第二个如果改用引用的话就是返回局部对象的引用 这就是我们为什么双目运算符不赞成使用友元的原因
yfk 2011-05-08
  • 打赏
  • 举报
回复
第一个返回引用,么问题
第二个,局部对象万万不能返回引用,和不能返回指向局部对象的指针一个道理
nakedavril 2011-05-08
  • 打赏
  • 举报
回复
是的
不行

64,654

社区成员

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

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