一个简单的问题,我在这里找不到答案。
我的理解是,在调用期间将参数传递给函数时,例如
void myFunction(type myVariable)
{
}
void main()
{
myFunction(myVariable);
}
对于简单的数据类型,如 int
, float
等,该函数按值调用。
但是如果 myVariable
是一个数组,则只传递起始地址(即使我们的函数是按值调用的函数)。
如果 myVariable
是一个对象,也只传递对象的地址,而不是创建一个副本并传递它。
所以回到这个问题。 C++ 是通过引用还是值传递对象?
原文由 user3041058 发布,翻译遵循 CC BY-SA 4.0 许可协议
参数按值传递,除非函数签名另有说明:
void foo(type arg)
,arg
中,不管type
是简单类型、指针类型还是类类型,都是按值传递的,void foo(type& arg)
,arg
通过引用传递。对于数组,传递的值是指向数组第一个元素的指针。如果您在编译时知道数组的大小,也可以通过引用传递数组:
void foo(type (&arg)[10])
。