C++ Virtual

摘自:http://www.cnblogs.com/xd502djj/archive/2010/09/22/1832912.html

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关键字,基类的函数被隐藏。

最后,求看官指导!!!!!!

只有在通过基类指针引用间接指向派生类子类型时多态性才会起作用

原文地址:https://www.cnblogs.com/R0SS/p/5082648.html