重载(这里主要考虑函数)
重载的定义:函数名相同,函数的参数列表不同(包括参数个数和参数类型),至于返回类型可同可不同。
匹配函数时,编译器将不区分类型引用和类型本身,也不区分const和非const变量,因为这些在定义和声明时可能不同,但是在调用时都是一样的,编译器将无法区分。
重载(overloaded)和多态无关,真正和多态相关的是覆盖(inheritance)。
补充:当派生类重新定义了基类的虚拟方法后,基类根据赋给它的不同的派生类引用,动态地调用属于派生类的对应方法,这样的方法调用在编译期间是无法确定的。因此,这样的方法地址是在运行期绑定的(动态绑定)。
覆盖(代码示例)
在派生类中覆盖基类中的同名函数,要求两个函数的参数个数、参数类型、返回类型都相同,且基类函数必须是虚函数。
隐藏(代码示例)
派生类中的函数屏蔽了基类中的同名函数,2个函数参数相同,但基类函数不是虚函数(和覆盖的区别在于基类函数是否是虚函数)。2个函数参数不同,无论基类函数是否是虚函数,基类函数都会被屏蔽(和重载的区别在于两个函数不在同一类中)。