【发布时间】:2011-03-14 17:38:41
【问题描述】:
我可以重载一个接受引用或变量名的函数吗?
例如,当我尝试这样做时:
void function(double a);
void function(double &a);
我希望这个函数的调用者能够做到:
double a = 2.5;
function(a); // should call function(double &a)
function(2.3); // should call function(double a)
我想编写传递引用函数以更好地使用内存并可能在范围外操作变量,但不必为了调用函数而创建新变量。
这可能吗?
干杯
【问题讨论】:
-
我认为这通常是可能的,尽管在您的示例中,两者都会调用
function(double a),因为 a 是一个 int,并且不能作为对 double 的引用。 -
抱歉,意思是说 a 是双精度数。现已更正问题
-
“可能在范围外对变量进行操作”是什么意思,以及如何与
function(2.3)一起工作
标签: c++ pass-by-reference overloading pass-by-value