1、函数重载,要求在同一个类里面,且函数名相同,参数列表不同,实现函数重载,系统会根据调用的函数参数具体匹配到使用的函数。
2、函数覆盖(使用virtual关键字)
函数覆盖发生在存在集成关系的不同类中,要求函数具有相同的函数名和参数列表。实例化的对象在调用函数时会自动调用子类中覆盖的函数,而不调用父类中virtual关键字的函数。需要覆盖功能的函数,只需要在父类中添加virtual关键字即可,子类中覆盖的函数不用加virtual关键字。
Sample:
--------------------------
class Base
{
public:Base(){}
public:
virtual void print(){cout<<"Base";}
};
------------------------------------------------------------------
class Derived:public Base
{
public:Derived(){}
public:
void print(){cout<<"Derived";}
};
---------------------------------------------------------------
int main()
{
Base *point=new Derived();
point->print();
}
-------------------------------------------------------------
Output:
Derived