这用于void fun(int & a)这种函数体上,其用途是做“引用传递”,将实参A(比如主函数里调用fun(A);)引用传递给a这个形参,同时a变化了,会修改A的值。
如果不想修改A的值,那么使用void fun(const int &a)进行定义,const用于保护实参。
最常用的void fun(int a)代表“值传递”,函数自动在内部生成临时变量a,复制实参A。这是主流形式。其中int属于系统自带简单数据类型,因此无需搞成void fun(const int &a)这么复杂的形式。
什么情况下用&呢?
对于非内部数据类型的参数而言,象void Func(自定义struct a) 这样声明的函数注定效率比较低。因为函数体内将产生“自定义struct”类型的临时对象用于复制参数a,而临时对象的构造、复制、析构过程都将消耗时间。因此采用void func(自定义struct &a)做“引用传递”,速度快。仅借用一下参数的别名而已,不需要产生临时对象。
发表评论