重载,重写,傻傻分不清楚
在C++中,重载(Overloading)和重写(Overriding)是两个不同的概念,它们涉及到函数或方法的使用和定义。下面分别介绍它们:
重载(Overloading)
重载是指在同一作用域内,允许有多个同名函数,这些函数的参数列表不同(参数的个数或类型不同)。编译器会根据调用时传递的参数来选择正确的函数版本。重载适用于普通函数和类成员函数。
示例:
#include <iostream>
void display(int num) {
std::cout << "Displaying an integer: " << num << std::endl;
}
void display(double num) {
std::cout << "Displaying a double: " << num << std::endl;
}
int main() {
int intValue = 42;
double doubleValue = 42.5;
display(intValue); // 调用 display(int)
display(doubleValue); // 调用 display(double)
return 0;
}
重写(Overriding)
重写是指派生类中重新定义基类中的虚函数(virtual function),以实现多态(Polymorphism)。派生类中的函数签名必须与基类中的虚函数完全相同(返回类型、函数名和参数列表)。当通过基类指针或引用调用该函数时,将根据对象的实际类型动态地调用相应的版本。
示例:
#include <iostream>
class Base {
public:
virtual void display() {
std::cout << "Displaying base class." << std::endl;
}
};
class Derived : public Base {
public:
// 重写基类的虚函数
void display() override {
std::cout << "Displaying derived class." << std::endl;
}
};
int main() {
Base* basePtr = new Base();
Base* derivedPtr = new Derived();
basePtr->display(); // 调用 Base::display()
derivedPtr->display(); // 调用 Derived::display()
delete basePtr;
delete derivedPtr;
return 0;
}
总结一下:
- 重载是在同一作用域内定义多个同名函数,但参数列表不同。
- 重写是派生类重新定义基类中的虚函数,实现多态。

本文来自博客园,作者:严_青,转载请注明原文链接:https://www.cnblogs.com/zhao-jie-li/p/17358136.html
标签:
大杂烩
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· 从HTTP原因短语缺失研究HTTP/2和HTTP/3的设计差异
· 三行代码完成国际化适配,妙~啊~
2016-04-27 Xcode 7:Storyboard Reference、Strong IBOutlet以及Scene Dock