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

转载于:https://www.cnblogs.com/yujinghui/archive/2013/01/10/2853931.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值