“过载” /“过载” /“过载”是什么意思?
-
08-07-2019 - |
题
“重载” /“重载”在编程方面是什么意思?
解决方案
这意味着您要提供一个具有相同名称但签名不同的函数(方法或运算符)。 例如: 通用标签
其他提示
基本概念
重载或“方法重载”是一个概念的名称,它具有多个具有相同名称但具有不同参数的方法。
例如c#中的System.DateTime类具有多个ToString方法。标准的ToString使用系统的默认区域性将日期时间转换为字符串: 通用标签
而相同方法的另一个重载允许用户自定义格式: 通用标签
有时参数名称可能相同,但参数类型可能不同: 通用标签
将小数点转换为int时 通用标签
将字符串转换为整数。
过载分辨率
为了找到最佳的重载调用,编译器执行名为“重载解析”的操作。对于第一个示例,编译器只需匹配参数计数即可找到最佳方法。对于第二个示例,如果传递十进制参数,则编译器将自动调用replace方法的十进制版本;如果传递字符串参数,则编译器将自动调用字符串版本。从可能的输出列表中,如果编译器找不到合适的输出来调用,则会出现诸如“最佳重载与参数不匹配...”之类的编译器错误。
您可以找到很多有关不同编译器如何执行重载解析的信息。
一个函数具有多个签名时,该函数将被重载。这意味着您可以使用不同的参数类型来调用它。例如,您可能具有在屏幕上打印变量的功能,并且可以为不同的参数类型定义它: 通用标签
在这种情况下,函数print()将具有三个重载。
表示具有相同功能的不同版本,这些版本采用不同类型的参数。这样的功能是“过载的”。例如,采用以下功能: 通用标签
您可以使用此功能在屏幕上打印字符串。但是,当您要打印整数时,不能使用此函数,然后可以制作该函数的第二个版本,如下所示: 通用标签
现在该函数已重载,并且将调用该函数的哪个版本取决于您提供给它的参数。
其他人回答了超载是什么。一开始,它会与覆盖/覆盖混淆。
与重载相对,重写是在子类(或子类)中定义具有相同签名的方法,该方法将覆盖父类的实现。某些语言需要明确的指令,例如C ++中的virtual
成员函数或Delphi和C#中的override
。
通用标签
重载方法是一种带有多个参数数目和类型选项的方法。例如: 通用标签
两者都会做相对相同的事情,但其中一个具有第二个参数以提供更多选项
同样,您可以使相同的方法采用不同的类型 通用标签
就像在通常用法中一样,它指的是某种事情(在这种情况下,是一种方法名),可以完成多项工作。
超载是CLOS和其他语言的多种方法的穷人版本。这是令人困惑的。
覆盖是通常的面向对象之一。它伴随着继承,我们也称它为重定义(例如,在 https://stackoverflow.com/users/3827/eed3si9n的答案 Line
提供了Draw()
的专门定义。