虚函数与纯虚函数(C++与Java虚函数的区别)的深入分析
虚函数
2.语法:virtual函数返回类型函数名(参数表){函数体}
3.用途:实现多态性,通过指向派生类的基类指针,访问派生类中同名覆盖成员函数,也就是允许子类override父类同名方法。
虚函数的作用是实现动态联编,也就是在程序的运行阶段动态地选择合适的成员函数,在定义了虚函数后,可以在基类的派生类中对虚函数重新定义,在派生类中重新定义的函数应与虚函数具有相同的形参个数和形参类型(也就是完全相同的方法,不能只是函数名相同。)。以实现统一的接口,不同的定义过程。如果在派生类中没有对虚函数重新定义,则它继承其基类的虚函数。
当程序发现虚函数名前的关键字virtual后,会自动将其作为动态联编处理,即在程序运行时动态地选择合适的成员函数。虚函数是C++多态的一种表现。动态联编规定,只能通过指向基类的指针或基类对象的引用来调用虚函数,其格式:
2.基类对象的引用名.虚函数名(实参表)
使用虚函数,我们可以灵活的进行动态绑定,当然是以一定的开销为代价。如果父类的函数(方法)根本没有必要或者无法实现,完全要依赖子类去实现的话,可以把此函数(方法)设为virtual函数名=0,例如:virtualvoidfun()=0,我们把这样的函数(方法)称为纯虚函数。如果一个类包含了纯虚函数,称此类为抽象类。
总结:如果一个子类想要重写父类的方法,那么父类的这个成员方法必须是virtual的,也就是这个方法必须是虚函数。
相关文章
- java分布式事务框架_Java分布式事务,及解决方案
- import java.io 是什么意思_Java IO 详解
- java 异步调用接口_Java接口异步调用[通俗易懂]
- java启动器_JAVA基础:Java 启动器如何查找类
- java的运行环境是什么_Java运行环境是什么
- java setproperty 未生效_Java System类setProperty()方法及示例[通俗易懂]
- Java版五子棋小游戏(java控制台)
- java的栈内存和堆内存_Java本地方法栈
- Java上传文件到数据库「建议收藏」
- Java实现抽奖模块的相关分享
- vscode配置java环境变量_配置Java
- 在基础语法中Java与c++有哪些不同?(对于学过c++转Java必看)
- Java反射和new效率对比,差距有多大?
- 【Android NDK 开发】JNI 方法解析 ( C/C++ 调用 Java 方法 | 函数签名 | 调用对象方法 | 调用静态方法 )
- Java生成对应字符串的MD5密码模块详解编程语言
- Java学习笔记之七java函数的语法规则总结详解编程语言
- Java并发编程之ReentrantLock源码解析详解编程语言
- 开发开创Linux更美好的Java开发环境(linux集成java)
- 检测Redis Java应用的过期检测实践(redisjava过期)
- 快速上手:Java连接Mongodb数据库(java连接mongodb数据库)
- Linux与Java调用C编程实战(linux java调c)
- 使用java获取md5值的两种方法
- java中String的一些方法深入解析
- java中this的用法示例(关键字this)