繁体   English   中英

如果其中一个具有引用,如何定义两个具有相同名称和参数的函数?

[英]How to define two functions with the same name and parameters, if one of them has a reference?

我有代码:

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++不能有这样的功能。 必须为实例sumByCopysumByRef命名不同的sumByRef 您如何期望编译器在每个点上决定要引用哪个?

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM