我想知道如何使用&访问某个内存位置改变了一个函数调用的性质.例如,如果我已经写了一个函数来设置圆的半径
@H_403_2@//True,if success,False if radius is off-screen
bool SetRadiusCircle(Circle &b,int r)
解决方法
是.如果您使用&,则以圆圈为参考.如果不使用它,则传递一个圆形对象的副本,由编译器为您创建的副本.这将触发类复制构造函数(您定义的构造函数或默认的构造函数,它是按位复制).
有了参考,你不会复制对象.而是获取您在呼叫者中的对象.它相当于对原始对象有一个别名,并且您执行的任何更改将应用于传递的对象.在复制的情况下,对象的任何更改在调用结束时丢失,因为该副本被销毁.
当您使用引用时,该参数的内部使用需要您使用.访问该对象的成员(例如b.getRadius()).如果你定义你的函数接受一个指针(func(Circle * bPtr)),那么你必须使用 – > (例如bPtr-> getRadius()).使用指针不同于使用引用,但最终的实际效果是相同的:您可以操纵原始对象而不是副本.
请注意,这在函数定义中有效.安&在另一个上下文中使用,可以让您指向某个东西所在的指针.他们不一样,虽然他们使用相同的符号.