函数重载允许一个类中具有同名但签名不同的函数,而函数重写发生在派生类中,当它覆盖基类中具有相同签名的函数,提供不同的行为。 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
函数,并提供更具体的绘制实现。
--结束END--
本文标题: 如何区分 C++ 中函数重载和重写
本文链接: https://www.lsjlt.com/news/606464.html(转载时请注明来源链接)
有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341
2024-05-24
2024-05-24
2024-05-24
2024-05-24
2024-05-24
2024-05-24
2024-05-24
2024-05-24
2024-05-24
2024-05-24
回答
回答
回答
回答
回答
回答
回答
回答
回答
回答
0