函数形参是类对象,调用该函数时形参为什么可以是引用类型?

函数形参是类对象,调用该函数时形参为什么可以是引用类型?如intx是classA的一个数据成员,有一个含参结构体函数给x赋值,类外面有函数voidf(Aa){a.x=1;... 函数形参是类对象,调用该函数时形参为什么可以是引用类型?如int x是class A的一个数据成员,有一个含参结构体函数给x赋值,类外面有函数void f(A a){a.x=1;},main函数中有A a(4); A&b=a; f(b);此时输出a.x,编译通过输出4,所以为什么引用b能赋给f函数的形参? 因为以往都是将对象赋给形参引用类型的。新手求指点谢谢。 展开
 我来答
Aupryyyyyyyyyy
2016-08-18 · TA获得超过1636个赞
知道大有可为答主
回答量:1574
采纳率:53%
帮助的人:948万
展开全部
A a(4);
A &b = a;
上一行定义一个对 a 的引用,也就是说 b 的地址和 a 一样,而 a.x 的值,应该在上一步的对构造函数的调用时已经设置成 4 了;
然而,下面这一行代码是没有效果的
f(b);
原因就是,f 这个函数的参数 a 是值传递的,意思就是说在调用时会创建 b 的一个副本给 f,结果 f 处理的就是这个副本,而非原本的 b
这就是为什么你之后再输出 a.x 或者 b.x,值是 4 而不是 f 里指定的 1
追问
好的,原来我将引用跟指针搞混了,以为a和b是不同的类型f(b)会报错,多谢指点。
匿名用户
2016-08-18
展开全部

/// 请参考  请对比 函数 f1和f2的参数  

已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式