C++重载、重定义与重写的用法详解
发表于:2025-11-13 作者:千家信息网编辑
千家信息网最后更新 2025年11月13日,这篇文章主要介绍"C++重载、重定义与重写的用法详解",在日常操作中,相信很多人在C++重载、重定义与重写的用法详解问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答"C++
千家信息网最后更新 2025年11月13日C++重载、重定义与重写的用法详解
这篇文章主要介绍"C++重载、重定义与重写的用法详解",在日常操作中,相信很多人在C++重载、重定义与重写的用法详解问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答"C++重载、重定义与重写的用法详解"的疑惑有所帮助!接下来,请跟着小编一起来学习吧!
一、重载(重载函数)
重载函数是C++为了方便使用,允许在同一范围中(一个类中)声明几个功能类似的同名函数,但是这些同名函数的形参(指参数的个数、类型或者顺序至少有一个)必须不同
1、代码实现在一个类中fun()函数的重载:
#includeusing namespace std;class Base{public: void fun() { cout << "Base::fun()" << endl; } void fun(int a) { cout << "Base::fun(int)" << endl; } void fun(int a, float b) { cout << "Base::fun(int,float)" << endl; }};void main(){ Base c; c.fun(); c.fun(1); c.fun(1, 1.0);}
2、运行程序之后的打印

二、重定义(函数同名隐藏)
如果一个类,存在和父类相同的函数(此处指函数名相同,对返回类型、形参没有要求),那么,这个类将会覆盖其父类的方法,除非你在调用的时候,强制转换为父类类型,否则试图对子类和父类做类似重载的调用是不能成功的,此方法称为重定义。(bb太多文字怕看官老爷晕乎乎,直接上代码)
1、代码实现在两个类中分别定义一个函数(函数名要求相同):
class Base{public: void fun() { cout << "Base::fun()" << endl; }};class D :public Base{public: void fun(int) { cout << "D fun(int)" << endl; }};int main(){ D d; //d.fun() 如果这样调用 系统会提示缺少参数 d.fun(1);//同名隐藏,此时调用的是子类中的fun函数 //如果想调用父类对象,下面的语句可以帮你实现,你需要指出调用的是谁的fun d.Base::fun(); }2、运行程序之后的打印

三、重写(覆盖)
子类可继承父类中的方法,而不需要重新编写相同的方法。但有时子类并不想原封不动地继承父类的方法,而是想作一定的修改,也就是子类重新定义父类中有相同名称和参数的虚函数(virtual),这就需要采用方法的重写。方法重写又称方法覆盖。
1、代码实现在子类重写父类虚函数:
class Person{public: virtual void Eat() { cout << "Person Eat food" << endl; } virtual void sleep() { cout << "Person sleep " << endl; } void study() { cout << "We need study" << endl; }};class Lily:public Person{public: virtual void Eat() { cout << "Lily Eat dumpling" << endl; } virtual void sleep() { cout << "Lily sleeps and dreams " << endl; }};void main(){ Lily L; /*子类对象不能直接调用被重写的方法 因为对D实例化的对象来说重写的函数覆盖掉了父类的虚函数 */ Person *pr = &L; pr->Eat(); pr->sleep(); L.study();}2、运行程序之后的打印
我们看完三个方法的实现之后来做一个横向比较:
| 函数 | 特点 |
|---|---|
| 函数重载 | 在同一个类中,同名函数形参的个数、类型、顺序至少有一个不同 |
| 重定义(同名隐藏) | 子类中存在和父类相同的函数(此处指函数名相同,对返回类型、形参没有要求),屏蔽了父类的同名函数 |
| 重写(覆盖) | 子类对父类继承的虚函数内容想做一定的修改 |
到此,关于"C++重载、重定义与重写的用法详解"的学习就结束了,希望能够解决大家的疑惑。理论与实践的搭配能更好的帮助大家学习,快去试试吧!若想继续学习更多相关知识,请继续关注网站,小编会继续努力为大家带来更多实用的文章!
函数
方法
子类
相同
C++
类型
代码
形参
学习
参数
程序
运行
不同
个数
少有
更多
顺序
帮助
实用
成功
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
计算机软件开发税收优惠
对于网络安全行业的理解
db2数据库修改表空间路径
厚植网络安全
网络安全法红头
微信数据库提取个人信息
数据库能存储的最大数据
EROES数据库
江西app软件开发需要多少钱
计算机网络技术18
厦门wms软件开发
云洲智能招聘应届软件开发工资
医疗数据库档案查询
舟山苹果服务器
计算机网络安全缩写
软件开发如何放入手机
一诺计划网络技术有限公司
edi服务器
交换机网络安全规划案例
购买服务器会被查吗
http服务器代理服务器
合肥泵断网络技术有限公司
郑州市妇幼保健院本部服务器
交行的软件开发怎样
东程软件开发
数据库精确度
河南项目软件开发哪家专业
用数据库写图书馆管理系统
网络安全手抄报黄色卡纸
共享中心数据中心服务器