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;
    }
  • 相关阅读:
    爬虫基本库request使用—爬取猫眼电影信息
    Linux系统下Mysql安装与配置
    Centos7安装配置Nginx
    VUE中使用geetest滑动验证码
    python中使用redis发布订阅者模型
    Django中使用极验Geetest滑动验证码
    Redis的常见用法
    微信服务号消息推送
    Python支付宝在线支付API
    Django Rest Framework(二)
  • 原文地址:https://www.cnblogs.com/lailailai/p/4317891.html
Copyright © 2011-2022 走看看