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() 方法,从而动态地计算和输出不同形状的面积。
作者最新文章
樱花动漫官网百度入口 樱花动漫专注门户网站入口
2026-11-05 10:59
office打开后显示空白 恢复文档内容
2026-11-04 23:12
OmoFun动漫最新官方版下载与使用指南(附图文步骤)
2026-11-04 09:48
office打开多个表格并排显示
2026-11-02 13:52
office文件打不开 修复文档故障
2026-11-02 09:42
热门文章
更多
精品专题
更多
Mac软件
更多
火山引擎 网页版
Windows/ macOS/ Linux
火山引擎是字节跳动旗下企业级云与AI服务平台。聚焦大模型核心能力,依托字节自研豆包多模态大模型,凭借火山方舟一站式平台,提供模型精调、推理部署、智能应用搭建等全链路服务,结合高性能AI算力,助力各行业快速落地大模型数字化与智能化应用。
















