代码改变世界

关于overload和override

2015-09-02 18:31  codinglol  阅读(191)  评论(0编辑  收藏  举报

override 覆盖,表示在子类中一个函数覆盖基类中的同名函数,或者局部的某个函数覆盖了全局的某个同名函数。被覆盖的函数通常不能直接被调用,必须借助一些显式的强制手段。

overload

重载,表示在同一级子类中或者同一命名空间中,一个函数因参数类型或个数的不同或返回类型不同可以有不同的实现。被重载的函数,通常每个不同的实现都可以单独被调用。

hide

隐藏,隐藏是override与overload的结合产物

下面可以给出一个例子:

 1 class A {
 2 public:
 3 virtual void func1(int arg1);
 4 virtual void func1(int arg1, int arg2);
 5 virtual void func1(int arg1, char *arg2);
 6 };
 7 
 8 class B: public A {
 9 public:
10 virtual void func1(int arg1);
11 };

其中,class A中的func1是overload函数,有三个overload版本;而class B中的func1是override函数,它override了A::func1(int arg1);在class B中, class A里面的两个双参数函数被hide了