指教函数返回值,谢谢大家啦

todototry 2006-10-07 09:37:11
(1)传引用的时候,函数局部引用变量占的内存是开辟在栈里么,它是否存放类似指针一样的一个地址值,谢谢
(2)运算符的重载的时候,什么时候返回引用,什么时候返回类对象,总感觉似懂非懂,高手指教,谢谢
...全文
170 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
chenhu_doc 2006-10-07
  • 打赏
  • 举报
回复
如果一个对象在重载操作符的函数块中被定义。
返回引用会出现问题。 因为在结束这个函数块时,这个局部对象已经被撤消了。(指针类似)

对于从参数中传递到重载操作符的函数块的对象,返回它的引用和对象都可以。
不过从两个方面来考虑的:
1: 对象的size大了,会发生该对象的拷贝构造,和析构过程。(降低效率)
2: 如果返回的对象要求是一个独立的对象,(也就是返回后对他的修改,不会对原对象产生影响)

例如 重载两个对象的加法: 那么就需要返回对象了。
taodm 2006-10-07
  • 打赏
  • 举报
回复
1)传引用其实是用传指针来实现的
2)去看effective c++的“该返回对象时别返回引用”这个item
chenhu_doc 2006-10-07
  • 打赏
  • 举报
回复
引用是被引用对象的别名。
在编译时期被解释成同一名字,根本就不用在分配额外空间(一点也不)
jixingzhong 2006-10-07
  • 打赏
  • 举报
回复
(2)运算符的重载的时候,什么时候返回引用,什么时候返回类对象,总感觉似懂非懂,高手指教,谢谢
=======
这个有严格限制么? 没有吧?
只需要考虑一些特殊情况就可以了 ...

另外,
从效率的角度讲,
复杂对象, 如 一个类, 操作引用可能更合适 ~
jixingzhong 2006-10-07
  • 打赏
  • 举报
回复
引用本身不是变量 ...

引用只是一个别名,
操作的就是 实参对象 ...

64,637

社区成员

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

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