C++的函数重载和函数重写


C++的函数重载和函数重写

文章插图
 
C++中,函数重载描述的是同一个类中不同成员函数之间的关系;函数重写是子类和基类之间不同成员函数之间的关系 。
1、函数重载在相同作用域中存在多个同名的函数,这些函数的参数表不同,编译器根据函数不同的形参表对同名函数的名称做修饰,然后这些同名函数就成了不同的函数 。
特点:
  • 函数重载必须在同一个类或同一个命名空间中进行;
  • 子类无法重载父类函数,父类同名函数将被覆盖;
  • 重载是在编译器期间根据参数类型和个数决定调用哪个函数 。
函数重载的代码示例:
void Test(int a);void Test(double a);void Test(int a, int b);void Test(double a, int b);注意:如果仅仅是函数的返回值不同,是没办法重载的 。
2、函数重写子类重写从基类继承过来的函数,子类的函数名、返回值、参数列表都必须和基类相同 。
特点:
  • 函数重写必须发生在父类与子类之间;
  • 父类与子类的函数原型完全一样;
  • 使用virtual声明之后能够产生多态(若不写virtual关键字,则称为重定义),多态是在运行期间根据具体对象的类型来决定调用哪个函数 。
函数重写和多态的代码示例:
#include <IOStream>using namespace std;class base {public:void Display1() {}virtual void Display2() {}};class derived : public base {public:void Display1() {}// 函数重写virtual void Display2() {}// 虚函数实现多态};

【C++的函数重载和函数重写】


    推荐阅读