使用&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()).使用指针不同于使用引用,但最终的实际效果是相同的:您可以操纵原始对象而不是副本.

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

相关文章

本程序的编译和运行环境如下(如果有运行方面的问题欢迎在评...
水了一学期的院选修,万万没想到期末考试还有比较硬核的编程...
补充一下,先前文章末尾给出的下载链接的完整代码含有部分C&...
思路如标题所说采用模N取余法,难点是这个除法过程如何实现。...
本篇博客有更新!!!更新后效果图如下: 文章末尾的完整代码...
刚开始学习模块化程序设计时,估计大家都被形参和实参搞迷糊...