直接给出结论,便于以后查阅:
1、多个普通函数,同名时会重载
2、同一个类中的成员函数,同名时会重载
3、子类与父类的函数同名时,子类会覆盖掉父类所有的同名函数,如下例,子类的一个func_0( ),把父类的func_0( )和func_0(int)都覆盖掉了。
4、发生覆盖时,父类指针指向子类对象时,访问的全部都是父类的同名成员函数。
#include <QCoreApplication>
#include <stdio.h>
class Base
{
public:
void func_0(void)
{
printf("base func_0\r\n");
}
void func_0(int a)
{
printf("base func_0(int a)\r\n");
}
};
class Derive: public Base
{
public:
void func_0(void)
{
printf("Derive func_0\r\n");
}
};
int main(int argc, char *argv[])
{
QCoreApplication a(argc, argv);
Derive d;
d.func_0();//输出:Derive func_0
//d.func_0(2);//编译出错,子类中不存在func0(int)
d.Base::func_0();//输出:base func_0
d.Base::func_0(2);//输出:base func_0(int a)
Base *pDerive = new Derive;
pDerive->func_0();//输出:base func_0
return a.exec();
}