博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
java和C++之动态绑定对比
阅读量:4603 次
发布时间:2019-06-09

本文共 894 字,大约阅读时间需要 2 分钟。

#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

你可能感兴趣的文章
javascript中的继承
查看>>
iOS-如何写好一个UITableView
查看>>
如何在Objective-C中实现链式语法
查看>>
select2 下拉搜索控件
查看>>
WebAPI常见的鉴权方法,及其适用范围
查看>>
08. 删除重复&海量数据
查看>>
重新想象 Windows 8 Store Apps (71) - 其它: C# 调用 C++
查看>>
发布mvc遇到的HTTP错误 403.14-Forbidden解决办法
查看>>
记录一些好用的工具
查看>>
超链接样式设置(去下划线)(转)
查看>>
2016012003+陈琦+散列函数的应用及其安全性
查看>>
Android 状态栏通知Notification、NotificationManager详解
查看>>
UIApplicationDelegate协议
查看>>
Jmeter测试dubbo接口填坑
查看>>
[zz]GDB调试精粹及使用实例
查看>>
数据库的创建和删除
查看>>
最简单的三层实例【插入据
查看>>
设计模式学习笔记——Prototype原型模式
查看>>
pom.xml里有红叉报错的解决办法
查看>>
Perl last和next的用法区别
查看>>