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

  • 相关阅读:
    Charles 环境安装
    postman的安装指南
    python-web自动化-三种等待方式(元素定位不到一)
    如何查找MySQL中查询慢的SQL语句
    1023 组个最小数
    linux学习笔记01
    P6461 [COCI2006-2007#5] TRIK
    P1181 数列分段Section I
    P4414 [COCI2006-2007#2] ABC
    如何安装oracle
  • 原文地址:https://www.cnblogs.com/yujinghui/p/2853931.html
Copyright © 2011-2022 走看看