<返回更多

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

2020-09-21    
加入收藏
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() {}  // 虚函数实现多态
};
声明:本站部分内容来自互联网,如有版权侵犯或其他问题请与我们联系,我们将立即删除或处理。
▍相关推荐
更多资讯 >>>