函数重载的歧义 - 整数与 double

标签 ambiguity

假设我希望有 2 个函数,一个在给定范围内生成随机整数,另一个在给定范围内生成随机 double 数。

int GetRandomNumber( int min, int max );
double GetRandomNumber( double min, double max );

请注意,方法名称是相同的。我正在尝试决定是否将函数命名为...
int GetRandomInteger( int min, int max );
double GetRandomDouble( double min, double max );

第一个选项的好处是用户不必担心他们正在调用哪个。他们可以使用整数或 double 调用 GetRandomNumber 并获得结果。

第二个选项在名称中更加明确,但它向调用者显示了不需要的信息。

我知道这是小事,但我关心小事。

编辑:C++ 将如何处理隐式转换。

例子:
GetRandomNumber( 1, 1 ); 

这可以为双版本的 GetRandomNumber 函数隐式转换。显然,我不希望这种情况发生。 C++ 会在双版本之前使用 int 版本吗?

最佳答案

我更喜欢你的第二个例子,它是明确的,在解释上没有歧义。最好在方法名称中明确指出该成员的目的和功能。

您的方法的唯一缺点是您已将方法名称与返回类型耦合,这在您想要更改这些方法之一的返回类型的情况下并不理想。但是,在这种情况下,我最好添加一个新方法,并且无论如何都不要破坏 API 的兼容性。

关于函数重载的歧义 - 整数与 double ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1924719/

相关文章:

ruby - 未执行的代码覆盖局部变量

c++ - 使用可变参数访问无参数模板函数的不明确重载

mysql冲突的where子句

c++ - 消除多重继承中的类成员歧义

c++ - 使用类的 'this' 指针的 boost::intrusive_ptr 构造函数歧义

android - Android View 的 ID 可以在多个 Activity 之间安全共享吗?

java - 关于 Java 的导入语法的歧义

c# - 使用 'Microsoft.Office.Interop.Word._Document.Close'时编译时警告

C++:构造函数歧义