微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

使用&C

我想知道如何使用&访问某个内存位置改变了一个函数调用的性质.例如,如果我已经写了一个函数来设置圆的半径
//True,if success,False if radius is off-screen
bool SeTradiusCircle(Circle &b,int r)

这是我教授给我的作业中给出的一个例子.我只想知道“&”他包含在样本函数调用中不同于使用Circle b.

解决方法

是.如果您使用&,则以圆圈为参考.如果不使用它,则传递一个圆形对象的副本,由编译器为您创建的副本.这将触发类复制构造函数(您定义的构造函数认的构造函数,它是按位复制).

有了参考,你不会复制对象.而是获取您在呼叫者中的对象.它相当于对原始对象有一个别名,并且您执行的任何更改将应用​​于传递的对象.在复制的情况下,对象的任何更改在调用结束时丢失,因为该副本被销毁.

当您使用引用时,该参数的内部使用需要您使用.访问该对象的成员(例如b.geTradius()).如果你定义你的函数接受一个指针(func(Circle * bPtr)),那么你必须使用 – > (例如bPtr-> geTradius()).使用指针不同于使用引用,但最终的实际效果是相同的:您可以操纵原始对象而不是副本.

请注意,这在函数定义中有效.安&在另一个上下文中使用,可以让您指向某个东西所在的指针.他们不一样,虽然他们使用相同的符号.

原文地址:https://www.jb51.cc/c/114328.html

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐