乐闻世界logo
搜索文章和话题

C++中的函数重写是什么?

4 个月前提问
4 个月前修改
浏览次数23

1个答案

1

在C++中,函数重写(Function Overriding)是面向对象编程中的一个重要概念,主要用于实现多态。当一个类(我们称之为子类或派生类)继承自另一个类(称为基类或父类)时,子类可以定义一个与基类中具有相同名称、相同返回类型及相同参数列表的函数。这种在派生类中定义的函数“覆盖”了基类中的同名函数。

函数重写的主要目的是让派生类能够改变或扩展继承自基类的行为。在运行时,这允许对象通过基类的指针或引用调用派生类中的函数,这是多态行为的基础。

示例:

假设我们有一个基类 Animal 和一个派生类 Dog,如下所示:

cpp
class Animal { public: virtual void speak() { cout << "Some animal sound" << endl; } }; class Dog : public Animal { public: void speak() override { // 这里使用了override关键字来明确指明重写 cout << "Woof" << endl; } };

在这个例子中,Dog 类重写了 Animal 类中的 speak 方法。当通过 Animal 类型的指针或引用调用 speak 方法时,如果指向的是 Dog 类的对象,那么调用的将是 Dog 类中的 speak 方法:

cpp
Animal* myPet = new Dog(); myPet->speak(); // 输出 "Woof"

这里,虽然 myPetAnimal 类型的指针,但它实际指向 Dog 的对象,因此调用的是 Dog 中重写的 speak 函数,这正是多态的体现。

使用 override 关键字是C++11引入的一种良好实践,它可以让编译器帮助检查函数是否正确地重写了基类中的函数。如果没有正确重写(例如参数类型不匹配),编译器将报错。这有助于避免因拼写错误或不匹配的函数签名而导致的错误。

2024年7月16日 14:15 回复

你的答案