C++ 函数重写:揭开继承中的行为覆盖秘籍
作者:ClearCorner
时间:2025-07-26
浏览:1
当派生类定义同名且实现不同的函数时,发生函数重写。规则包括:使用override关键字。名称、参数和返回类型与基类函数相同。访问权限不得低于基类函数。通过重写,派生类可以覆盖基类行为,实现多态,动态调用不同派生类的同名方法。
本文目录
当派生类定义同名且实现不同的函数时,发生函数重写。规则包括:使用 override 关键字。名称、参数和返回类型与基类函数相同。访问权限不得低于基类函数。通过重写,派生类可以覆盖基类行为,实现多态,动态调用不同派生类的同名方法。

C++ 函数重写:揭开继承中的行为覆盖秘籍
在 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;
}
};函数重写的规则如下:
- 派生类函数必须具有相同名称、参数列表和返回类型。
- 派生类函数必须使用
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() 方法,从而动态地计算和输出不同形状的面积。
作者最新文章
PS网页版怎么使用
2026-10-26 10:54
Gode浏览器安卓版下载与使用指南:收藏网页及功能解析
2026-10-23 19:10
Luminar Neo AI人像优化与皮肤平滑度调整教程
2026-10-21 18:09
Linux系统安装Python指南:Ubuntu/CentOS包管理器与源码编译方法
2026-10-16 16:59
python 绿色版:概念解析、环境隔离与验证流程
2026-09-05 07:27
热门文章
更多
精品专题
更多
Mac软件
更多
WINDOWS
更多

































