📜  C++函数重写(1)

📅  最后修改于: 2023-12-03 14:39:59.382000             🧑  作者: Mango

C++ 函数重写

C++ 中的函数重写(Function overriding)是指在派生类中定义与基类中相同名称、参数列表和类型的函数。

在函数重写中,基类中的函数称为基函数,派生类中的函数称为派生函数。派生函数必须与基函数具有相同的返回类型,或者返回类型是基函数的返回类型的公有派生。

语法

函数重写语法如下:

class Base{
public:
    virtual void print(){
        cout << "Print base class function." << endl;
    }
};
class Derived:public Base{
public:
    void print(){
        cout << "Print derived class function." << endl;
    }
};
注意事项
  • 基类和派生类中重写的函数的名称和参数列表必须完全相同。
  • 重写函数的返回类型或形式参数列表不能与基函数不同。
  • C++ 11之前,函数重写不能使用 override 关键字表示,但是可以使用 virtual 关键字。
  • C++ 11引入了 override 关键字,用于在派生类中显式说明函数覆盖。
示例代码
#include <iostream>
using namespace std;

class Base{
public:
    virtual void print(){
        cout << "Print base class function." << endl;
    }
};

class Derived:public Base{
public:
    void print(){
        cout << "Print derived class function." << endl;
    }
};

int main()
{
    Base* base_pointer;
    Derived der;
    base_pointer = &der;
    base_pointer->print();
    return 0;
}

输出结果为:

Print derived class function.

在这个示例中,Base 类中有一个 print 函数,Derived 类继承了 Base 类,并在该类中对 print 函数进行了重写。

在 main() 函数中,定义了一个指向 Base 类对象的指针 base_pointer,然后用 Derived 类的对象指针来为 base_pointer 赋值,然后调用 base_pointer 的 print 函数。由于指针是指向一个派生类对象的,所以会调用派生类的 print 函数。

总结

C++ 的函数重写使得程序可以根据对象的不同类型来调用相应的函数。在面向对象的编程中,函数重写是一种常见的技术,是实现多态性的重要手段之一。