我要投搞

标签云

收藏小站

爱尚经典语录、名言、句子、散文、日志、唯美图片

当前位置:彩66彩票 > 多态 >

虚函数与重载函数的区别与联系

归档日期:07-26       文本归类:多态      文章编辑:爱尚语录

  可选中1个或多个下面的关键词,搜索相关资料。也可直接点“搜索资料”搜索整个问题。

  展开全部虚函数在基类中声明 用virtual修饰 但是并不实现 ,只是在子类继承基类时才实现

  重载函数是基类中已经有某个函数,当子类继承时重新实现(基类已实现)覆盖基类的方法。

  虚函数之所以存在,是因为要实现类对象的多态性,看看下面的一个程序段,你就知道虚函数有什么用了:

  有了虚函数,那么很多种继承类的对象就可以通过一个基类“端口”(这里表现在void test(A *a){a-f();};这个函数的实现),这样才能实现对象里的方法的实现是后面可能选择性的,你可以从反面想象一下,如果没有虚函数的话,这种选择性的对象实现会怎么来编写,当然会使代码变得非常的繁琐。

  多态特性的工作依赖虚函数的定义,在需要解决多态问题的重载成员函数前,加上virtual关键字,那么该成员函数就变成了虚函数,从上例代码运行的结果看,系统成功的分辨出了对象的真实类型,成功的调用了各自的重载成员函数。

  多态特性让程序员省去了细节的考虑,提高了开发效率,使代码大大的简化,当然虚函数的定义也是有缺陷的,因为多态特性增加了一些数据存储和执行指令的开销,所以能不用多态最好不用。

  1 abstract的方法,父类可以不实现,让子类去重写(重写=overwrite,不过一般不会提到).父类如果存在abstract方法,那么必然是抽象类,必然不能直接实例化(比如 A a=new A()是不行的),必须由子类去继承并且重写所有抽象方法后再去使用.比如:A a=new B().

  2 虚方法,父类写了之后,子类可以去override.继承的时候调用B.m()

  3 一般的重载.这个跟继承没有多大关系.普通的类自身不用写什么关键字就能实现.有着同样的名字,但是调用的时候根据参数的不同,编译器选择合适的来使用

  abstract class A //这个父类声明了一个抽象方法,一个虚方法,自己实现了一个重载

  展开全部虚函数在基类中声明 用virtual修饰 但是并不实现 ,只是在子类继承基类时才实现

  重载函数是基类中已经有某个函数,当子类继承时重新实现(基类已实现)覆盖基类的方法。

本文链接:http://chapmanswifts.com/duotai/833.html