C++入门经典 笔记 (第十七章)使用多态和派生类
来源:互联网 发布:中国工控网软件下载 编辑:程序博客网 时间:2024/06/16 00:14
多态即意味着具有多种形态,要使用多态,必须明白前一章所说的派生类的对象也可视为基类对象。将这些派生类对象视为基类对象而调用基类方法时,便使用了多态。
要使用多态,可声明一个基类指针,并将在堆中创建一个派生类对象的地址赋给它。比如(基类:Mammal和派生类:Dog),由于派生类对象也是基类对象,所以下面的代码是合法的:Mammal * pMammal = new Dog; 然后就可以用该指针对Mammal调用任何成员函数。在调用重写了的函数时,将根据指针指向的对象类型,调用正确的函数。注意:在基类中,被调用的重写的函数必须用virtual关键字修饰,即它是虚函数。不然,当调用该函数时,就会实现基类的方法而不是指针指向的对象的方法,这就达不到多态的效果了。
不能通过基类指针访问派生类特有的方法
如果Dog有成员函数WagTail(),但是Mammal没有,就不能通过Mammal指针来访问它(除非将其转换为Dog指针)。
使用虚成员函数的代价
包含虚成员函数的类必须维护一个虚函数表(v-table),因此使用虚函数会带来一些开销,如果类很小,并且不打算从它派生出其他类,就根本没必要使用虚函数。
问:如果基类的一个函数(Somefunc())是虚函数,且被重载以便能接受一个或两个int参数,而在派生类重写了接受一个int参数的版本,那么通过指向派生类对象的指针调用接受两个int参数的函数时,将调用哪个函数?
答:重写接受一个int参数的版本将隐藏基类中所有同名函数,因此将出现编译出错,指出该函数只接受一个int参数。
0 0
- C++入门经典 笔记 (第十七章)使用多态和派生类
- 《C和指针》第十二章 使用结构和指针和第十七章 经典抽象数据类型
- (福利)”C++Primer笔记“和”Java经典入门笔记“
- C++入门经典 笔记 (第二十章)使用特殊的类、函数和指针
- C++入门经典 笔记 (第十八章)使用高级多态
- OBJ-C类的继承和派生学习笔记
- C++入门经典 笔记(第四章)使用表达式、语句和运算符
- C++入门经典 笔记(第七章)使用数组和字符串存储信息
- 第十七章经典抽象数据类型(一)
- [C++]继承和派生类
- C++入门经典 笔记(第三章)变量和常量
- 王爽《汇编语言》(第二版) 学习笔记 (第十七章 使用BIOS进行键盘输入和磁盘读写)
- C++入门经典 笔记 (第十六章)使用继承扩展类
- [汇编学习笔记][第十七章使用BIOS进行键盘输入和磁盘读写
- 汇编语言学习笔记第十七章 使用BIOS进行键盘输入和磁盘读写
- C++(29)基类和派生类
- 算法竞赛入门经典-学习笔记1(c语言)
- 继承---派生类(C++)
- 我的现代电子系统设计(一):学习总结
- MAC 设置环境变量path的几种方法
- CAS lockfree 循环队列
- 演示gzip压缩响应正文数据
- __attribute__ 详解
- C++入门经典 笔记 (第十七章)使用多态和派生类
- 腾讯面试(三)
- Android 控件之六:RadioGroup and RadioButton 单选组和单选钮
- Linux线程同步
- 演示定时刷新
- JAVA基础学习(五)---面向对象一类,对象、封装
- 黑马程序员-Java基础:常用API
- 新的开始
- CSS选择符及优先级计算