当派生类定义同名且实现不同的函数时,发生函数重写。规则包括:使用 override 关键字。名称、参数和返回类型与基类函数相同。访问权限不得低于基类函数。通过重写,派生类可以覆盖基类行为,实现多态,动态调用不同派生类的同名方法。

在 C++ 中,函数重写是一种通过继承实现多态行为的关键特性。当派生类定义一个与其基类同名且具有不同实现的函数时,就会发生函数重写。
为了重写基类函数,派生类必须使用 override 关键字。例如:
class Base {
public:
virtual void print() {
cout << "Base class print()" << endl;
}
};
class Derived : public Base {
public:
virtual void print() override {
cout << "Derived class print()" << endl;
}
};函数重写的规则如下:
立即学习“C++免费学习笔记(深入)”;
override 关键字。考虑一个形状抽象类和它的两个派生类矩形和圆。
class Shape {
public:
virtual double getArea() = 0;
};
class Rectangle : public Shape {
public:
double width, height;
Rectangle(double w, double h) : width(w), height(h) {}
override double getArea() {
return width * height;
}
};
class Circle : public Shape {
public:
double radius;
Circle(double r) : radius(r) {}
override double getArea() {
return M_PI * radius * radius;
}
};
int main() {
Rectangle rect(5, 3);
Circle circle(4);
Shape* shapes[] = {&rect, &circle};
for (auto shape : shapes) {
cout << "Shape area: " << shape->getArea() << endl;
}
}在这个示例中,Shape 类定义了一个抽象方法 getArea(),由派生类 Rectangle 和 Circle 重写以提供实际的面积计算。通过多态,我们可以使用 shapes 数组中的基类指针调用 getArea() 方法,从而动态地计算和输出不同形状的面积。
以上就是C++ 函数重写:揭开继承中的行为覆盖秘籍的详细内容,更多请关注php中文网其它相关文章!
c++怎么学习?c++怎么入门?c++在哪学?c++怎么学才快?不用担心,这里为大家提供了c++速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号