不管是重载、重写、重定义他们与原函数都是同样的函数名,不然不就是另一个函数,和原函数没什么关联了吗。。。 |
1.重载
- 相同的作用域(同一个类)
- 参数不同
- 返回值可以不同
- virtual关键字可加可不加
2.重写
其实重写也就是派生类改写基类中的虚函数。
- 作用域不同(分别位于派生类和基类)
- 参数相同
- 返回值相同或协同(基类返回基类的指针时,派生类返回派生类的指针,称为协同)
- 基类函数必须有virtual关键字,不能有static
- 重写函数的访问修饰符可以不同,尽管virtual是public的,派生类中重写可以改成private,protected也是可以的
3.重定义
- 作用域不同(分别位于派生类和基类)
- 参数可以不同
- 返回值可以不同
- 基类无virtual关键字