1重载(overload):同类中的同名函数不同参数表,不能单依靠函数返回值判断。
2重写(override)【子类覆盖父类方法】:子类父类中,同名同参同返回值且基类为虚函数。
3重定义(redefine)【子类隐藏父类方法】:子类父类中,同名不同参数表的函数或者同名相同参数表的非基类虚函数。
#include<iostream>
using namespace std;
class base {
public:
void fun1() { cout << "fun1()基类重载" << endl; };
void fun1(int x) { cout << "fun1(int x)基类重载" << endl; };
void fun2() { cout << "fun2()基类重载" << endl; };
void fun2(int x) { cout << "fun2(int x)基类重载" << endl; };
virtual void fun3() { cout << "fun3()基类" << endl; };
};
class derived :public base {
public:
void fun1() { cout << "fun1派生类重定义" << endl; }
void fun3() { cout << "fun3()派生类重写" << endl; }
};
int main() {
base *p=NULL;
p->fun1();
p->fun1(1);
derived a;
a.fun1();
a.base::fun1(1);
a.fun2();
p =& a;
p->fun3();
return 0;
}
![这里写图片描述](https://img-blog.csdn.net/20180417130248375?watermark/2/text/aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3BpbGlwaWxpcGFu/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70)