[英]Cannot find baseclass function if baseclass has two functions of same name
[英]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++
不能有这样的功能。 必须为实例sumByCopy
和sumByRef
命名不同的sumByRef
。 您如何期望编译器在每个点上决定要引用哪个?
您可以通过这种方式重载,如果您不直接调用它们中的任何一个,它将编译OK。 但是,当您调用sum(num)
时,它将引起歧义。 因此,提供这些函数的重载是没有意义的,因为我们不能直接调用它们。 这种重载是没有用的,并且违反了良好实践。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.