zoukankan      html  css  js  c++  java
  • Java与C++区别:重载(Overloading)

    Java中一个类的函数重载可以在本类中的函数和来自父类中的函数之间进行,而C++类中的函数重载只能是本类中的(即不包括来自父类的函数),这是他们一个非常重要的区别。在其他方面的要求都是一致的,即要求函数名称一致,参数不同。只有返回值类型不同的函数,不能构成重载(会有编译错误,提示函数定义重复)。

    1. Java的函数重载范围是整个继承体系中的可见函数

    public class OverrideAndOverload {
    
        public static void main(final String[] args) {
            // TODO Auto-generated method stub
            OverClassB obj = new OverClassB();
            obj.say("hi");
            obj.say(123);
        }
    
    }
    
    class OverClassA {
        public void say(final String words) {
            System.out.println("A: " + words);
        }
    }
    
    class OverClassB extends OverClassA {
        public void say(final int n) {
            System.out.println("B: " + n);
        }
    }

    2.而C++中的类中的函数重载的范围只能是本来中的函数,如果本类中的函数与父类的函数名称重合那么就会隐藏父类相应的函数(不会产生重载的效果)。如果继续使用父类的函数则编译无法通过:

    #include <iostream>
    #include <cstdlib>
    
    using namespace std;
    
    class A {
        public:
            void say(const char* words) {
                cout<<"A: "<<words<<endl;
            }
    };
    
    class B {
        public:
            void say(int n) {
                cout<<"B: "<<n<<endl;
            }
    
    };
    
    int main() {
        B b;
        b.say("haha");//此行产生编译错误
        
        system("pause");
        return 0;
    }
  • 相关阅读:
    2019春第三次课程设计实验报告
    2019春第二次课程设计实验报告
    2019春第一次课程设计实验报告
    第十二周总结
    第十一周总结
    第五周课程总结&试验报告(三)
    第四周课程总结&实验报告(二)
    第三周课程总结&实验报告一
    第二周学习总结
    19春总结
  • 原文地址:https://www.cnblogs.com/lailailai/p/4317891.html
Copyright © 2011-2022 走看看