在C++中存在两种比较难理解的概念
1、函数重载
首先在C++中,如果两个函数的作用域相同,然后两个函数的名字相同但是形参不同,这样的两个函数是会形成重载关系的。
但是对是否是virtual的要求可有可无,而且对返回值类型的要求也可有可无。
有一点值得注意的是const会影响函数的重载,因为在多个参数的函数中,const会影响参数的优先顺序从而导致两个函数的参数在同一队列,这样就会产生错误,但是这种错误是发生在调用过程中的,也就是说如果不对相关联的函数进行调用,是不会发生错误的。
2、函数重写
函数重写在C++中是属于不同的两个类中,而且一定要是虚函数(virtual),如果存在函数名相同、形参列表相同,返回值类型相同(可以不同,但是必须是可以经过某种方式进行转换的),就会形成重写,
重写和覆盖本质上是同一中语法的不同名称而已。所以在期间一定是发生过继承关系的父子类之间才会形成重写(覆盖)。否则就有可能形成重写