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

  • 相关阅读:
    函数调用与参数传递总结(完成)
    序列总结
    python中如何调用.py文件
    反射获取Class对象的方式有哪些,反射创建对象的方式有哪些
    Dubbo的协议
    长连接和短连接
    hashset 和 treeset
    说说你对java中GC机制的理解
    找不着 jdbc 配置文件解决方案
    web.xml标准配置
  • 原文地址:https://www.cnblogs.com/yujinghui/p/2853931.html
Copyright © 2011-2022 走看看