函数重载与函数重写(有的书也叫做“覆盖”)的区别

函数重载与函数重写(有的书也叫做“覆盖”)的区别

重载(overload)和重写(overried,有的书也叫做“覆盖”)的区别?

常考的题目。从定义上来说:

重载:是指允许存在多个同名函数,而这些函数的参数表不同(或许参数个数不同,或许参数类型不同,或许两者都不同)。

重写:是指子类重新定义复类虚函数的方法。

从实现原理上来说:

重载:编译器根据函数不同的参数表,对同名函数的名称做修饰,然后这些同名函数就成了不同的函数(至少对于编译器来说是这样的)。如,有两个同名函数:function func(p:integer):integer;和function func(p:string):integer;。那么编译器做过修饰后的函数名称可能是这样的:int_func、str_func。对于这两个函数的调用,在编译器间就已经确定了,是静态的。也就是说,它们的地址在编译期就绑定了(早绑定),因此,重载和多态无关!

重写:和多态真正相关。当子类重新定义了父类的虚函数后,父类指针根据赋给它的不同的子类指针,动态的调用属于子类的该函数,这样的函数调用在编译期间是无法确定的(调用的子类的虚函数的地址无法给出)。因此,这样的函数地址是在运行期绑定的(晚绑定)。

 

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/114826.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 原型模式的应用场景_原型模式深浅克隆区别

    原型模式的应用场景_原型模式深浅克隆区别ProtoType 原型模式动机模型定义实例结构要点总结笔记动机在软件系统中,经常面临着”某些结构复杂的对象“的创建工作;由于需求的变化,这些对象经常面临着剧烈的变化,但是它们却拥有比较稳定一致的接口如何应对这种变化?如何向”客户程序“(使用这些对象的程序)”隔离出“这些易变对象,从而使得”依赖这些易变对象的客户程序“不随着需求变化而变化?模型定义使用原型实例指定创建对象的种类,然后通过拷贝这些原型来创建新对象。实例和工厂模型用的同一个实例工厂模式//工厂class SplitterF

    2022年8月11日
    6
  • Nginx+DNS负载均衡「建议收藏」

    Nginx+DNS负载均衡「建议收藏」今天看了很多关于nginx负载均衡的博客,人家推荐的都是自己的ip来做负载,但是同样有说DNS负载均衡,刚开始我也是一头雾水,慢慢的分析才知道真正意义上的Nginx+DNS负载均衡。1.nginx负载均衡的5种策略(先了解这个后面的才好懂)轮询策略(默认)这种策略下每个请求按时间顺序逐一分配到不同的后端服务器,如果后端服务器down掉,能自动剔除。upstreambackserver{server192.168.0.14;server192.168.0.15;}指定

    2022年7月14日
    38
  • jvm定义的类加载器_类加载器有哪些

    jvm定义的类加载器_类加载器有哪些0.为什么需要自定义类加载器网上的大部分自定义类加载器文章,几乎都是贴一段实现代码,然后分析一两句自定义ClassLoader的原理。但是我觉得首先得把为什么需要自定义加载器这个问题搞清楚,因为如果不明白它的作用的情况下,还要去学习它显然是很让人困惑的。首先介绍自定义类的应用场景:(1)加密:Java代码可以轻易的被反编译,如果你需要把自己的代码进行加密以防止反编译,可以先…

    2025年9月23日
    8
  • 1024代理服务器网站,1024hgc.com服务器iP「建议收藏」

    2021-07-26—–2021-08-10172.67.24.1612021-07-26—–2021-08-10104.22.46.962021-07-26—–2021-08-10104.22.47.962021-03-25—–2021-07-26104.26.3.652021-03-25—–2021-07-26104.26.2.652021-03-25—–2…

    2022年4月9日
    103
  • word在试图打开文件时遇到错误[通俗易懂]

    word在试图打开文件时遇到错误[通俗易懂]昨天晚上在台式机上写了个word文档,发到邮箱。今天在邮箱上下载后就打不开了,出现“word在试图打开文件时遇到错误”。让人很郁闷,因为两台电脑上装的都是word2016.。。。看到网上说的是用WPS打开,之后再另存为,可是我早已没有了WPS。突然灵光一现,我点击了该文档的属性:有个解除锁定,我在上面划勾,点击确定后,再次打开,竟然就打开了~~~~开心~20170825周

    2022年4月28日
    83
  • Tomcat 面试题汇总

    Tomcat 面试题汇总1、Tomcat的缺省端口是多少,怎么修改?1)找到Tomcat目录下的conf文件夹2)进入conf文件夹里面找到server.xml文件3)打开server.xml文件4)在server.xml文件里面找到下列信息<ConnectorconnectionTimeout="20000"port="8080"protocol=&q

    2022年6月12日
    28

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号