概念:
重载:在同一个作用域下,函数名相同,但函数参数列表不同(参数个数,类型,顺序)。
隐藏:指派生类成员函数遮蔽了与这个函数同名的基类中的函数。
(1)派生类成员函数与基类成员函数同名,但参数列表不同。
(2)派生类成员函数与基类成员函数同名,且参数列表相同,但基类中函数并没有用virtual关键字修饰
覆盖:派生类重写基类成员函数(多用于多态中)
(1)基类中的函数必须是虚函数(用virtual修饰)
(2)在不同的作用域,一个是基类,一个是派生类。
(3)函数名称和参数列表完全相同(函数原型相同)
代码实例:
#include<iostream>
using namespace std;
class B
{
public:
void Get(int,int)
{
cout <<" B::Get()" << endl;
}
void Find()//与下面的fun(int a,int b)构成重载
{
cout << "B::Find()" << endl;
}
void Find(int a, int b)
{
cout << "B::Find(int a,int b)" << endl;
}
virtual void Sum(int, int)
{
cout << "B::Sum()" << endl;
}
};
class C:public B
{
public:
void Get(int,int)//函数隐藏
{
cout << "C::Get()" << endl;
}
virtual void Sum(int, int)//函数重写
{
cout << "C::Sum()" << endl;
}
};
int main()
{
C c;
C *pb =&c;
pb->Get(5, 4);//C::Get()
pb->Find(); //B::Find()
pb->Sum(5, 4);//C::Sum()
system("pause");
return 0;
}