函数重载允许一个类中具有同名但签名不同的函数,而函数重写发生在派生类中,当它覆盖基类中具有相同签名的函数,提供不同的行为。

C++ 中函数重载与重写的区别
函数重载
函数重载允许在同一类中使用相同名称的不同函数,只要它们的签名(参数类型和数量)不同。
立即学习“C++免费学习笔记(深入)”;
语法:
return_type function_name(parameter_types) {
// 函数体
}
// 另一个重载
return_type function_name(other_parameter_types) {
// 另一个函数体
}实战案例:
考虑一个名为 AreaCalculator 的类,它计算不同形状的面积:
class AreaCalculator {
public:
double Area(double radius) {
return M_PI * radius * radius;
}
double Area(double length, double width) {
return length * width;
}
double Area(int numOfSides, double sideLength) {
// 正多边形的面积公式
// ... 省略后面代码
}
};在这里,Area 函数被重载以接收不同数量和类型的参数,允许根据形状类型计算不同的面积。
函数重写
函数重写发生在派生类中,当它覆盖基类中具有相同签名(名称和参数类型)的函数时。派生类中的重写函数的行为通常不同于基类中的函数。
语法:
class DerivedClass : public BaseClass {
public:
// 重写基类中的函数
return_type function_name(parameter_types) {
// 重写的函数体
}
};实战案例:
考虑一个名为 Shape 的基类,它定义了一个 Draw 函数来绘制形状:
class Shape {
public:
virtual void Draw() {
// 绘制通用形状
// ... 省略后面代码
}
};派生类 Circle 可以重写 Draw 函数来专门绘制圆形:
class Circle : public Shape {
public:
void Draw() override {
// 绘制圆形
// ... 省略后面代码
}
};通过重写,Circle 类的 Draw 函数将覆盖 Shape 类中的 Draw 函数,并提供更具体的绘制实现。
以上就是如何区分 C++ 中函数重载和重写的详细内容,更多请关注php中文网其它相关文章!
c++怎么学习?c++怎么入门?c++在哪学?c++怎么学才快?不用担心,这里为大家提供了c++速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号