C++多态以及其注意事项
来源:互联网 发布:java关闭线程的方法 编辑:程序博客网 时间:2024/04/30 11:45
1、虚函数、覆盖以及多态的概念
1)class 基类 {
virtual 返回类型 函数名 (形参表) [const] { ... }};
的成员函数,称为虚函数或方法。
2)覆盖
如果子类的成员函数和基类的虚函数具有“相同”的函数原型,那么该成员函数就也是虚函数,无论其是否带有virtual关键字,且对基类中的虚函数构成覆盖。class 子类 : public 基类 {
[virtual] 返回类型 函数名 (形参表) [const] { ... }
};
3)多态
如果子类提供了对基类虚函数的有效覆盖,那么通过一个指向子类对象的基类指针,或者引用子类对象的基类引用,调用该虚函数,实际被调用的将是子类中的覆盖版本,而非基类中的原始版本,这种语法现象谓之多态。
4)覆盖的条件
A.必须是非静态的成员函数,但是构造函数除外;
B.必须在基类中用virtual关键字声明其为虚函数;
C.子类中的覆盖版本和基类中的原始版本,函数原型(返回类型+函数名+形参表+常属性)必须“相同”;
D.如果基类中的虚函数返回的是某个类类型的指针或者引用,那么该虚函数在子类中的覆盖版本,也可以返回基类版本所返回的指针或者引用的类型的子类的指针或者
引用————类型协变
E.覆盖的条件与访问控制属性无关。
5)多态的条件
A.虚函数和有效覆盖
B.通过指针或者引用调用虚函数
C.在基类的构造和析构函数中调用虚函数,没有多态性
0 0
- C++多态以及其注意事项
- 多态以及其优缺点
- 多态以及其优缺点
- 获取系统Temp,以及其注意事项。
- 深入Java基础(三)--集合(2)ArrayList和其继承树源码解析以及其注意事项
- static的含义以及其在C/C++中的区别
- static的含义以及其在C/C++中的区别
- C#添加C项目以及其dll引用不成功
- static的含义以及其在C/C++中的区别
- C语言-是用单链表求整数的位数以及其和
- static的含义以及其在C/C++中的区别
- 【C语言】求数组最大值最小值以及其位置
- C语言运算符及优先级---以及注意事项(日积月累)
- Objective - C基础: 第二天 - 2.封装练习以及注意事项
- Object-c------类的声明与实现以及注意事项
- 【C#】关于右下角托盘图标以及气泡使用的注意事项
- C语言中字符串系列函数的实现以及注意事项
- 最近一年做Android项目过程中,对其的一些注意事项(优化)以及问题总结(一)
- IllegalArgumentException at org.springframework.asm.ClassReader when initializing Spring context
- GridView
- 12306购票时被拦截的原因
- 天地图河池,天地图巴马
- TS 类型备忘 音视频格式
- C++多态以及其注意事项
- mysql存储引擎比较
- Python 图像库包
- 【C语言】交换两个数
- Linux常见基础命令总结(二)
- 第一篇博客
- 聊聊iOS中的网络加密
- 日常笔记:git
- python多线程处理数据