C+学习之多态篇(虚函数)
来源:互联网 发布:tensorflow 鸢尾花 编辑:程序博客网 时间:2024/04/29 20:41
一、什么事多态?
多态的定义:相同对象收到不同消息或不同对象收到相同消息时产生不同的动作。
二、多态分类:
定义不太好理解,其实或字前后说明了两个不同类型的多态形式:即静态多态(早绑定)和动态多态(晚绑定)。
1.静态多态(早绑定)
看下图中代码:
两个calcArea()函数互为重载,互为重载的函数在main()函数中调用的时候会根据参数的不同来调用各自的函数,这种调用关系是很早就确定下来的,即在程序运行之前,在编译阶段就已经确定下来要使用哪个函数了,这种情况就叫做早绑定或静态多态。
2.动态多态
动态多态的一个特性就是用父类的指针去指向子类的对象,并用父类的指针去调用相应的calcArea()函数去执行求面积的操作,如果父类的calcArea()函数不是virtual,那么下面的调用代码只会调用父类的calcArea()函数,没有实现多态;如果父类的calcArea()函数已经声明为virtual的,那么下面的调用代码就会调用各个子类的calcArea()函数,即对不同的子类对象实行相同的指令,做出了不同的动作响应。
注意:
(1)父类的calcArea()函数必须和子类的calcArea()函数返回值参数名称都一模一样才行,不然无法构成多态;
(2)父类的calcArea()函数声明为virtual以后,虚的特性是可以继承的,即子类的calcArea()函数写不写virtual,都已经是虚函数了,但是好的习惯是写上,明了。
多态几个特点简单归结如下:
(1)多态具体到语法是指:使用父类指针指向子类对象,并可以通过该指针调用子类的方法;
(2)产生多态的基础是存在继承关系,没有继承就没有多态;
(3)必须使用virtual才能在多个子类之间建立多态关系。
- C+学习之多态篇(虚函数)
- C++学习之多态篇(纯虚函数和虚函数的区别)
- C++学习笔记之多态(虚函数)
- 学习笔记之多态与虚函数
- C++学习之多态篇(虚析构函数)
- C++学习之多态篇(纯虚函数和接口类)
- C++学习之多态篇(虚函数和虚析构函数的实现原理--虚函数表)
- c++学习之多态(虚函数和纯虚函数)
- c++远征之多态篇(虚函数)
- 虚函数之多态讲解
- C++学习笔记之多态与虚函数,虚函数表
- c++远征之多态篇(纯虚函数和抽象类)
- C++之多态和虚函数
- C++之多态和虚函数
- C++之多态与虚函数
- C++笔记之多态中的虚函数
- VS之多态虚函数的实现
- 总结之多态和虚函数
- Android开发之EditText属性详解
- 蓝牙学习之旅——低功耗蓝牙之频带和通道
- 最常见的eclipse快捷键
- MySQL索引使用方法和性能优化
- 基于Chromium内核的Android WebView
- C+学习之多态篇(虚函数)
- 春晚最全支付宝现金红包全攻略
- 黑马程序员 -IO流(上)
- make menuconfig 配置
- fastjson-1.1.34.android,和xUtils-2.6.13简单用法1,将网络新闻转化到app
- 虚拟机字节码执行引擎
- Android 循环广告位轮播图的封装实现
- notification遇到的坑
- LaTex 空格问题~~~~~