0

我有代码:

int SomeClass::sum(int x)
{
    return x+=x;
}

int SomeClass::sum(int & x)
{
    return x+=x;
}

……

int num = 0;
int result = sum(num);

那行不通。我如何使用这两个函数并在调用它们时指出我想使用其中的哪一个?

4

3 回答 3

2

您可以提供两种不同的重载int&const int&,这可能会以某种方式满足您的需求...

但是整个代码有点奇怪......在按值获取参数的函数中,您正在修改它( ),而只读取+=可能是有意义的。在接受引用的重载中,您既要修改参数又要返回新值。这有点奇怪。return x+x;

除此之外,sum对于乘以 2 的函数来说,这是一个可怕的名称。

于 2013-04-09T15:17:59.823 回答
1

你不能在C++. 它们必须以不同的方式命名,例如sumByCopysumByRef。您希望编译器如何确定您在每一点指的是哪一个?

于 2013-04-09T15:16:10.447 回答
0

你可以用这种方式重载,如果你不直接调用它们中的任何一个,它会编译好的。但是,调用时会引起歧义sum(num)。因此,提供这些函数的重载是没有意义的,因为我们不能直接调用它们。这种重载是无用的,并且违反了良好的做法。

于 2013-04-09T15:19:15.097 回答