我有代码:
int SomeClass::sum(int x)
{
return x+=x;
}
int SomeClass::sum(int & x)
{
return x+=x;
}
……
int num = 0;
int result = sum(num);
那行不通。我如何使用这两个函数并在调用它们时指出我想使用其中的哪一个?
您可以提供两种不同的重载int&
和const int&
,这可能会以某种方式满足您的需求...
但是整个代码有点奇怪......在按值获取参数的函数中,您正在修改它( ),而只读取它+=
可能是有意义的。在接受引用的重载中,您既要修改参数又要返回新值。这有点奇怪。return x+x;
除此之外,sum
对于乘以 2 的函数来说,这是一个可怕的名称。
你不能在C++
. 它们必须以不同的方式命名,例如sumByCopy
和sumByRef
。您希望编译器如何确定您在每一点指的是哪一个?
你可以用这种方式重载,如果你不直接调用它们中的任何一个,它会编译好的。但是,调用时会引起歧义sum(num)
。因此,提供这些函数的重载是没有意义的,因为我们不能直接调用它们。这种重载是无用的,并且违反了良好的做法。