【问题标题】:True meaning of word "overloading" in programming编程中“重载”一词的真正含义
【发布时间】:2021-09-25 06:45:02
【问题描述】:

我正在学习 C++,但我对重载运算符和函数的真正含义感到困惑。

在我使用过的本地文献中,有一个重载函数的翻译,其中“负载”作为名词而不是动词 - 所以它具有"an excessive load or burden" 的含义,尽管在这种情况下,据我了解,从这个意义上说,没有什么是“超载”的 (e.g. similar to circut overload)。

如果我们将“加载”视为动词,那么它意味着函数“再次加载”,超过现有定义。

我是否走在正确的道路上,在编程的情况下,“重载”的正确解释是什么?

【问题讨论】:

标签: c++ function operator-overloading overloading terminology


【解决方案1】:

编程中的术语重载源于semantic overloading - 即为某个单词或短语分配多种含义。

在 C++ 的情况下,相同的函数或运算符可以重载 - 这意味着对于不同的参数类型可以有多个版本。然后由名为overload resolution 的进程根据调用上下文确定调用哪个重载。

【讨论】:

  • 太棒了,谢谢!我以前从未在英语中听到过这个词(语义重载),现在它完全有道理。:)
【解决方案2】:

在 C++ 中,“重载”指的是 overload resolution 期间的候选函数。

简单来说,这是当有多个函数或运算符声明具有相同的标识符,但具有不同的参数或不同的限定符时。这些函数中的每一个都是一个重载,编译器选择调用哪个函数的过程就是重载决议。

例如,以下为函数foo 声明了两个重载,它们的参数类型不同:

void foo(int);
void foo(double);

【讨论】:

  • 您的示例声明函数foo()的两个重载。它没有定义它们。
猜你喜欢
  • 2014-10-03
  • 1970-01-01
  • 2017-12-12
  • 2013-10-09
  • 1970-01-01
  • 2022-10-12
  • 1970-01-01
  • 2013-02-02
  • 2021-12-05
相关资源
最近更新 更多