MST

星途 面试题库

面试题:C++类普通成员函数参数传递之值传递与引用传递

在C++类中,有一个普通成员函数 `void func(int a)` 和 `void func(int& a)`,请说明这两种参数传递方式在使用场景、性能以及对实参影响上有什么区别。
44.8万 热度难度
编程语言C++

知识考点

AI 面试

面试题答案

一键面试

使用场景

  • 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 的修改会直接反映到实参上,因为操作的就是实参本身。