如何区分 C++ 中函数重载和重写
短信预约 -IT技能 免费直播动态提醒
函数重载允许一个类中具有同名但签名不同的函数,而函数重写发生在派生类中,当它覆盖基类中具有相同签名的函数,提供不同的行为。
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++ 中函数重载和重写的详细内容,更多请关注编程网其它相关文章!
免责声明:
① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。
② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341