zoukankan      html  css  js  c++  java
  • java和C++之动态绑定对比

    #include<stdio.h>
    class Father{
    public :
        virtual void print(){
            printf("virtualFahter");
        }

        void print1(){
            printf("Fahter1");
        }
    };

    class Child : public Father{
    public :
        void print(){
            printf("virtualChild");
        }

        void print1(){
            printf("Child1");
        }
    };

    main(){
        Child * child = new Child();
        //Father * child = new Child();
        child->print();
        child->print1();
    }

    该程序执行的结果为virtualChildChild1而把主函数中第二行注释去掉后第一行加上注释以后结果为virtualChildFahter1。

    结论显而易见,C++中只有virtual的函数才能动态绑定。

    class Deo{
        public int i = 0;
        public void prin(){
            System.out.println("Fahter")    ;
        }
    }

    public class DeoChild extends Deo{
        public int i = 1;
        public void prin(){
            
            System.out.println(“CHild”);
        }

        public static void main(String[] args){
            Deo deo  = new DeoChild();
            
            deo.prin();
        }
    }

    结果为CHild,故java中的重写就是动态联编之一。

    java的抽象方法和C++中虚函数关系:

    java的抽象方法没有具体的实现不能被调用,而C++虚函数有实现可以调用。相同点都是以动态绑定为基础。

  • 相关阅读:
    这是一篇通过open live writer发布的博文
    网卡重启失败
    2020年1月目标
    二、安装docker
    JS中的数据类型,包含ES6,set和map等等
    关于prototype和__proto__,最好的一些解释
    JS中call,apply和bind方法的区别和使用场景
    ThinkPHP5生成word文档代码库
    js/jquery操作iframe
    PHP技术--思维导图
  • 原文地址:https://www.cnblogs.com/yujinghui/p/2853931.html
Copyright © 2011-2022 走看看