【问题标题】:Why overload a function with fewer / greater arguments?为什么用更少/更大的参数重载一个函数?
【发布时间】:2010-10-11 19:18:50
【问题描述】:

所以我是一名 java 程序员,我知道函数重载意味着什么。此外,我用不同类型的参数重载了一个函数,并且可以用更少和更大的参数重载。

我在一次采访中被问到这个问题。我真的不知道这是否有任何好处或面试官在这里得到了什么。它有什么性能优势吗?有什么想法吗?

谢谢。

【问题讨论】:

    标签: oop overloading


    【解决方案1】:

    它是关于通过允许使用默认值调用函数来提供灵活的接口。某些语言通过可选参数允许这样做,但您可以通过重载实现或多或少相同。

    【讨论】:

      【解决方案2】:

      我以前用它来提供向后兼容性。

      【讨论】:

        【解决方案3】:

        它提供了灵活性 例如

        假设您有一个通常不需要更改的属性,除非在特殊情况下您可以简单地编写一个重载方法来接受特殊的 curcumstance,而不是要求它被默认或每次都需要在常规方法中设置它

        例如

        公共无效connectToDatabase(字符串连接字符串) { //一些命令 }

        public void connectToDatabase(string connString, string username, string password) { //一些命令 }

        【讨论】:

          【解决方案4】:

          面试官可能一直在暗示依赖注入,可以通过方法或构造函数来完成。

          【讨论】:

            【解决方案5】:

            绝对是为了向后兼容。此外,如果很少使用非默认值传递(超过 2 个)参数,那么创建重载方法很有用。

            【讨论】:

              【解决方案6】:

              如果一种语言不支持重载,那么执行速度会更快。因为程序将不必使用/跟踪/管理重载机制。

              但是如果语言支持重载,你应该使用它们!以下是性能方面的原因:

              1. 传递参数的成本很高。因为他们需要内存空间和访问它们。因此,如果您发送 2 个相同数据类型的参数,它实际上会比您可能传递 1 个参数要慢。

              2. 参数不同,你没有出路。

              3. 由于您至少必须为最长的参数列表创建函数,因此您必须检查大量空/空值,并根据它们的条件来实现更少或不同参数的算法。

              4. 有些参数实际上是其他参数的属性。您可以将它们发送到数组或数组引用中。就像您可能想要打印一些东西,并且您可能有一些常见的参数,例如颜色、边框等。你真的不需要为它们制作单个参数。

              5. 您还应该计算每个版本的使用次数。您可以合并可能具有较低频率的那些。不要碰最忙的!

                这么多实用的理论;)

              【讨论】:

                猜你喜欢
                • 1970-01-01
                • 1970-01-01
                • 1970-01-01
                • 1970-01-01
                • 1970-01-01
                • 2017-01-19
                • 2023-03-27
                • 1970-01-01
                • 1970-01-01
                相关资源
                最近更新 更多