C++ Virtual
2015-12-28 15:17
274 查看
摘自:/article/4792719.html
一、看完博主写的Virtual这个关键词,做一下笔记:
1.在基类中加入Virtual关键字的函数是虚拟函数!(例如getType,声明时默认返回值const为0);
2.OO机制中多态性的体现;
二、关于博主针对重载和覆盖的知识点,我再做一下笔记:
1.重载的几个函数必须是属于同一个类;
覆盖的几个函数必须是有继承关系的不同类中。
2.重载的几个函数必须函数名相同,参数不同、返回值随意;
覆盖的几个函数必须函数名相同、参数相同、返回值相同。
3.重载和Virtual没有任何关系,加和不加都不影响重载的作用;
覆盖的函数前必须加入Virtual关键字。
三、博主针对C++的隐藏规则的笔记
1.如果派生类的函数与基类的函数同名,但是参数不同,此时,无论有无Virtual关键字,基类的函数将被隐藏。
2.如果派生类的函数和基类的函数同名,并且参数相同,此时,如果没有Virtual关键字,基类的函数被隐藏。
最后,求看官指导!!!!!!
只有在通过基类指针或引用间接指向派生类子类型时多态性才会起作用
namespace QCAR { /// Area is the base class for 2D shapes used in Vuforia class QCAR_API Area { public: enum TYPE { RECTANGLE, RECTANGLE_INT, INVALID }; virtual TYPE getType() const = 0; virtual ~Area(); private: Area& operator=(const Area& other); }; } // namespace QCAR
一、看完博主写的Virtual这个关键词,做一下笔记:
1.在基类中加入Virtual关键字的函数是虚拟函数!(例如getType,声明时默认返回值const为0);
2.OO机制中多态性的体现;
二、关于博主针对重载和覆盖的知识点,我再做一下笔记:
1.重载的几个函数必须是属于同一个类;
覆盖的几个函数必须是有继承关系的不同类中。
2.重载的几个函数必须函数名相同,参数不同、返回值随意;
覆盖的几个函数必须函数名相同、参数相同、返回值相同。
3.重载和Virtual没有任何关系,加和不加都不影响重载的作用;
覆盖的函数前必须加入Virtual关键字。
三、博主针对C++的隐藏规则的笔记
1.如果派生类的函数与基类的函数同名,但是参数不同,此时,无论有无Virtual关键字,基类的函数将被隐藏。
2.如果派生类的函数和基类的函数同名,并且参数相同,此时,如果没有Virtual关键字,基类的函数被隐藏。
最后,求看官指导!!!!!!
只有在通过基类指针或引用间接指向派生类子类型时多态性才会起作用
相关文章推荐
- C++入门(5):定义个人函数
- C++ 大规模程序设计 之 包
- C/Cpp的 typedef
- C语言复习(1)
- Problem H: C语言实验——数组逆序
- C++实现的农历算法
- 一个比较全的C++农历算法
- ln ,lg,log在c语言中的表示
- C语言exp()函数
- c++ 计算某个日期是星期几,判断某年某月一号是星期几
- OC语言--基础语法
- (二)代理模式C++
- C语言文件操作(3) --- stdio.h中其他有关文件操作的函数
- C语言的内存分配
- 邻接表实现PRIM算法(C++)
- 【C++】学籍管理系统
- C++最佳编程实践
- c++ 函数调用在进入下一个循环的时候会再次初始化参数,将函数体直接写进去就正常
- C++ Primer笔记7_STL之关联容器
- Problem B: C语言习题5.14--for循环画三角形