面试题答案
一键面试使用场景
void func(int a)
:适用于函数内部仅需使用实参的值,而不需要修改实参本身的场景。例如,计算一个值但不改变传入数据的情况。void func(int& a)
:适用于函数内部需要修改调用者传入的实参值的场景。例如,对传入数据进行处理并返回处理后结果的场景。
性能
void func(int a)
:传递的是实参的副本,会产生额外的空间开销用于存储副本。如果实参是较大的结构体或类对象,性能开销会比较明显。void func(int& a)
:传递的是实参的引用,不会产生副本,只传递一个地址,空间开销小,对于大型对象的传递性能更优。
对实参影响
void func(int a)
:函数内部对形参a
的修改不会影响到实参,因为操作的是副本。void func(int& a)
:函数内部对形参a
的修改会直接反映到实参上,因为操作的就是实参本身。