重载、重写(覆盖)和隐藏的区别
一、重载
重载从overload翻译过来,是指同一可访问区内被声明的几个具有不同参数列(参数的类型,个数,顺序不同)的同名函数,根据参数列表确定调用哪个函数,重载不关心函数返回类型。
示例代码如下:
classA{ public: void test(int i); void test(double i); void test(int i, double j); void test(double i, int j); int test(int i); //错误,非重载 };
前四个互为重载函数,最后一个和第一个不是重载函数。
二、隐藏
隐藏是指派生类的函数屏蔽了与其同名的基类函数。注意只要同名函数,不管参数列表是否相同,基类函数都会被隐藏。
实例代码如下:
#include<iostream> using namespace std; classA{ public: void fun1(int i, int j){ cout <<"A::fun1() : " << i <<"