【C++程序设计】-多态性和虚函数
来源:互联网 发布:淘宝客服怎么设置多个 编辑:程序博客网 时间:2024/06/05 20:00
1.多态性
静态联编所支持的多态性称为编译时的多态性
动态联编所支持的多态性称为运行时的多态性,由虚函数来支持
2.静态联编
对象的内存地址空间中只包含数据成员,并不存储有关成员函数的信息
3.动态联编
C++要实现动态联编,调用函数时必须使用派生类指针
使用关键值virtual声明的函数,称为函数的虚函数;例如:virtual double area(){return 0}
派生类能继承基类的虚函数表,而且只要是和基类同名(参数也相同)的成员函数,无论是否使用virtual声明,它们都自动成为虚函数
4.虚函数
一旦基类定义了虚函数,该基类的派生类中的同名函数也自动成为虚函数
虚函数只能是类中的一个成员函数,但不能是静态成员,关键字virtual用于类中该函数的声明中,如:virtual void fun();//声明虚函数
5.虚函数实现多态性的条件
关键字virtual指示C++编译器对调用虚函数进行动态联编,称为运行时的多态性
产生运行时多态性前提:
类之间的继承关系满足赋值兼容兼容规则
改写了同名虚函数
根据赋值兼容性规则适用指针(或引用)
动态联编在运行时进行的,相对与静态联编,它的运行效率比较低,可以使程序员对程序进行高度抽象
6.构造函数和析构函数调用虚函数
见课本P172页
7.纯虚函数
virtual函数类型 函数名(参数列表) = 0;
一个类可以说明多个纯虚函数,包含有纯虚函数的类称为抽象类
一个抽象只能作为基类来派生新类,不能被实例化,但可以指向抽象类对象的指针
从一个抽象类派生的类必须提供虚函数的实现代码,或者在派生类中仍将它说明为纯虚函数(这种情况下,说明纯虚函数的派生类仍是抽象类)
派生类给出了基类所有纯函数的实现,则该派生类不再是抽象类
通过同一个基类派生一系列的类,则将这些类总称为类族
抽象类至少含有一个虚函数,而且至少有一个虚函数是纯虚函数,以便将它与空虚函数区分例如:
virtualvoid area()= 0;//纯虚函数
virtualvoid area() {};//空的虚函数
- 【C++程序设计】-多态性和虚函数
- c++--多态性和虚函数
- 面向对象的程序设计-5-多态性和虚函数-part1
- 面向对象的程序设计-5-多态性和虚函数-part2
- C++面向对象程序设计——多态性和虚函数
- 多态性和虚函数
- 虚函数和多态性
- 虚函数和多态性
- 虚函数和多态性
- 多态性和虚函数
- 多态性和虚函数
- 多态性和虚函数
- 多态性和虚函数
- 多态性和虚函数
- 虚函数和多态性
- 多态性和虚函数
- 多态性和虚函数
- 多态性和虚函数
- Linux安装软件时出现无法修正错误的解决方法
- bzoj2427 软件安装
- java线程之间的调度使用wait/notify,await/single,LinkBlockingQuene实现
- 实验三十进制转二进制
- linux学习第一篇:网络配置
- 【C++程序设计】-多态性和虚函数
- 关于微信公众号服务器设置token的问题
- 记录 视频广告sdk 的开发之路
- 从印刷特点来区分“一元”纸币特点
- 单链表中的冒泡排序(无头节点)
- 【C++程序设计】-运算符重载及流类库
- [二分 前缀优化建图 2-SAT] Codeforces 587D. Duff in Mafia
- R语言中的时间与日期
- 【C++程序设计】-面向对象设计实例