关于引用返回值?

jcreatorqijiashe 2003-06-27 07:06:15
Matrix& grow(Matrix* p){
Matrix *res;
//在动态存储中分配一个更大的Matrix
//res是指向新Matrix的指针
//将*p内容复制到*res
return *res;
}
声明的返回值不是Matrix&这样一个引用(或指向Matrix的指针)吗?为什麽返回一个*res具体的值?是不是应该返回res?Matrix&在这里应该看成返回一个Matrix的引用还是Matrix的地址?
...全文
171 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
magic007 2003-06-28
  • 打赏
  • 举报
回复
reference可以理解为一个对象的别名,一旦初始化就不能指向别的变量,也就是说不能更改为另一个变量的别名。
比如说
int i;
int &ir=i;
在这里ir就成为i的别名,在用到i的地方,就可以用ir来代替。
reference是针对"值"的变量。所以在楼主的问题中应返回*res而不是res,res是个指针
除非函数返回值类型定义为 Matrix *& 这样就可以返回res
MaiCle 2003-06-27
  • 打赏
  • 举报
回复
这里返回值做成引用型的目的是减少对象的拷贝构造。
MaiCle 2003-06-27
  • 打赏
  • 举报
回复
如果不是具体的值,那别人怎么引用啊?
messagebox 2003-06-27
  • 打赏
  • 举报
回复
你对类型理解的还不够
res的类型是指向Matrix的指针
*res的类型就是Matrix
对于返回值Matrix&说明返回类型一定为Matrix,引用强调的是返回原对象,所以要注意不要返回局部对象的引用
晨星 2003-06-27
  • 打赏
  • 举报
回复
应该看到一个具体的值,对于返回的引用,引用的就是这个值。

69,382

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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