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++虚函数有实现可以调用。相同点都是以动态绑定为基础。

  • 相关阅读:
    dedecms为导航栏目添加英文标题
    网页设计中一些小功能
    less使用总结
    canvas图形库
    前端面试总结三
    前端面试总结二
    DOM节点中获取文本易混淆的属性
    前端面试总结
    git 学习使用总结三(远程仓库操作)
    git 学习使用总结二(远程仓库操作)
  • 原文地址:https://www.cnblogs.com/yujinghui/p/2853931.html
Copyright © 2011-2022 走看看