2.重载、隐藏、重写¶
函数重载¶
虽然和虚函数的概念无关,但经常和后面的一起考,所以就先放在这了
- 定义:
C++规定在同一作用域中,例如一个类的成员函数之间,多个函数的名称相同,但是各个函数的形式参数(指参数的个数、类型或者顺序)不同时,构成函数重载。
- 代码示例
int test(int a);
int test(int a, double b);
int test(double b, int a);
int test(int a, const char ** c);
void test(int a, const char ** c); // 非重载,一起编译会提示错误,仅仅返回值不同编译无法区分使用的是那个重载函数
-
总结
-
前提:函数名称相同,即要求是同名函数;
- 重载作用域:函数重载发生在横向水平的同一作用域,例如一个类成员函数之间的重载、全局函数之间的重载;
- 重载类型:无论是类的静态成员函数,还是类的普通成员函数,亦或是普通的函数,都可以形成重载;
- 重载要素:函数返回值类型函数重载无任何关系,仅仅返回值不同,形参相同的情况,会被禁止重载;
隐藏¶
函数隐藏是说,在不同作用域中,定义的同名函数构成函数隐藏(仅仅要求函数名称相同,对于返回值和形式参数不做更多要求,并且对于是否是虚函数也不做要求)。例如派生类同名成员函数屏蔽与其基类的同名成员函数,以及屏蔽同名全局外部函数。