我可以重载一个采用引用名或变量名的函数吗?
例如,当我尝试这样做时:
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)
我想编写按引用传递的函数,以便更好地使用内存并可能在范围外操作变量,但不必创建一个新变量就可以调用该函数。
这可能吗?
干杯
最佳答案
我认为您没有捕获要点。你真正应该拥有的只是这个:
void function(const double &a);
注意“常量”。这样,您应该始终获得按引用传递。如果通过引用传递非常量,那么编译器将正确地假定您希望修改传递的对象——这当然在概念上与按值传递变体不兼容。
有了 const 引用,编译器会很乐意在你背后为你创建临时对象。非 const 版本对您不起作用,因为编译器只能将这些临时对象创建为“const”对象。
关于c++ - 通过引用传递的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3227434/