之前在学习C++继承和多态的时候对于三个概念理解的不是很透彻,现在对这三个的概念来总结一下
重载 overload
重载:简单说就是函数名称相同,但是参数列表不相同的情形,这样的同名不同参数的函数互相称之为重载函数。
重载实际上属于多态的一种,是编译时多态即静态多态
来看看重载的条件
- 相同的范围(成员函数重载)
- 函数名相同
- 参数列表不同
在这里解释一下参数列表不同可以是以下几种不同
- 参数个数不同
- 参数类型不同
- 参数顺序不同
来看示例(都在类中实现)
我们可以看到,前四个互为重载函数,而最后一个不是。 不能只用返回值类型不同来重载函数
重写 override
重写也就是我们说的覆盖,覆盖是指派生类中的函数覆盖基类的函数
派生类中存在重新定义的函数。其函数名,参数列表,返回值类型,所有都必须同基类中被重写的函数一致。只有函数体不同(花括号内),那么派生类中的那个函数就相当于重写了基类的该函数。注:基类中被重写的函数必须有virtual关键字修饰
来看例子: