大家帮我解释解释

hjay900828 2011-02-03 04:29:23
最近在看C++运算符重载部分,对返回引用有点不明白,为什么要返回引用?有什么区别吗?比如这两个函数有啥区别?
int max(const& int a,const& int b)
int& max(const& int a,const& int b)
...全文
100 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
hjay900828 2011-02-04
  • 打赏
  • 举报
回复
了解了,谢谢大家,新年快乐
harleypang 2011-02-04
  • 打赏
  • 举报
回复
这个问题好像是c++中比较经典的问题。好多教科书和资料都有详细的讲解啊!

你清楚了函数的调用过程以及引用调用和直接调用的异同就好理解了。直接调用的参数结合过程是值传递。引用调用的参数结合过程是位传递。
jikeyuan1 2011-02-04
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 athenacle_ 的回复:]

要有递归的思想。。。。
[/Quote]

同时也可以不用调用拷贝构造函数 减少开销
JsenLong 2011-02-04
  • 打赏
  • 举报
回复
用引用是提高程序的效率,引用就是变量本身,不是是要拷贝一份给变量。
Athenacle_ 2011-02-03
  • 打赏
  • 举报
回复
要有递归的思想。。。。
modaoshi3002 2011-02-03
  • 打赏
  • 举报
回复
返回引用是为了返回一个左值,可以被再赋值,或者继续链式操作。
pengzhixi 2011-02-03
  • 打赏
  • 举报
回复
自己编译下吧
hjay900828 2011-02-03
  • 打赏
  • 举报
回复
谢谢一楼 二楼我用VC调试了
int x=5,b=3,m,n;
m=max1(x,y);//返回引用的
n=max2(x,y);//不带引用的
m的地址与x的不一样
三楼不太明白你的意思,给它赋值是什么意思?
pengzhixi 2011-02-03
  • 打赏
  • 举报
回复
#include<iostream>
using namespace std;

int& fun(int &lhs,int &rhs)
{
return lhs>rhs?lhs:rhs;
}

int fun1(int &lhs,int &rhs)
{
return lhs>rhs?lhs:rhs;
}


int main()
{
int a=10;
int b=20;
fun(a,b)=30;
fun1(a,b)=40;//无法通过编译
cout<<b<<endl;

system("pause");
return 0;
}
shove 2011-02-03
  • 打赏
  • 举报
回复
main()
{
int A = 0, B = 10;

int C = max(&A, &B); // C 是一个新变量

如果用第二个函数:
int& C = max((&A, &B); // C 只是一个引用了,A,B 中较大数的引用而已。
}
shove 2011-02-03
  • 打赏
  • 举报
回复
http://www.vckbase.com/article/cpp_mfc/1.htm
三两句说不清,给个地址你去看看

64,648

社区成员

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

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