8、 C++ 中重载和重写,重定义的区别
重载
翻译⾃ overload,是指同⼀可访问区内被声明的⼏个具有不同参数列表的同名函数,依赖于 C++函数名字的修饰会将参数加在后⾯,可以是参数类型,个数,顺序的不同。根据参数列表决定调⽤哪个函数,重载不关⼼函数的返回类型
重写 翻译⾃ override,派⽣类中重新定义⽗类中除了函数体外完全相同的虚函数,注意被重写的函数不能是 static 的,⼀定要是虚函数,且其他⼀定要完全相同。要注意,重写和被重写的函数 是在不同的类当中的,重写函数的访问修饰符是可以不同的,尽管 virtual 中是 private 的,派⽣类中重写可以改为 public。
重定义(隐藏)
派生类重新定义父类中相同名字的非 virtual 函数,参数列表和返回类型都可以不同,即⽗类中除了定义成virtual 且完全相同的同名函数才不会被派生类中的同名函数所隐藏(重定义)。
Last updated