函数重载(overload)和函数重写(override)
1. 前言: 在C++中有两个非常容易混淆的概念,分别是函数重载( overload )和函数重写( overwirte )。虽然只相差一个字,但是它们两者之间的差别还是非常巨大的。 而通过深入了解这两个概念的区别,会对C++的面向对象机制有一个更深入的理解。 2 函数重载(overload function) 2.1 函数重载的概念: 2.1.1 概念: 当函数具有相同的名称,但是 参数列表不相同 的情形( 包括参数的 个数不同 或参数的 类型不同 ),这样的 同名而不同参数 的函数之间,互相被称之为重载函数。 2.1.2 基本条件: 函数名必须相同; 函数参数必须不相同,可以是参数类型或者参数个数不同; 函数返回值可以相同,也可以不相同。(备注: 但是如果函数的名称和参数完全相同,仅仅是返回值类型不同,是无法进行函数重载的。 ) 2.1.3 注意: 只能通过不同的参数样式进行重载,例如:不同的参数 类型 ,不同的参数 个数 ,或者不同的参数 顺序 ; 不能通过访问权限、返回类型、抛出的异常不同而进行重载; 重载的函数应该在相同的作用域下。 2.1.4 函数重载实例判断: 以下的集中写法,分别表示了哪些是重载的,哪些不是重载的。 (1) void func1( int arg1); (2) void func1( double arg1); (3) void func1(