"overloading"在编程中的真正含义

True meaning of word "overloading" in programming

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

在我用过的本地文献中,有一个重载函数的翻译,“load”是一个名词,而不是一个动词——所以它的意思是"an excessive load or burden" although in this case, as I understood it, nothing is "overloaded" in that sense (e.g. similar to circut overload)。

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

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

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

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

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

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

编程中的术语重载源于semantic overloading——即为某个词或短语赋予多重含义。

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

的调用上下文确定