C++重载、重定义与重写的用法详解
发表于:2025-01-22 作者:千家信息网编辑
千家信息网最后更新 2025年01月22日,这篇文章主要介绍"C++重载、重定义与重写的用法详解",在日常操作中,相信很多人在C++重载、重定义与重写的用法详解问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答"C++
千家信息网最后更新 2025年01月22日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安全错误
数据库的锁怎样保障安全
数据库个人查询代码
末日行者 服务器
游戏服务器架构教程
班组网络安全报道
盈利的网络安全股票
网络安全政策环境
计算机网络技术英语要学多久
软件开发合同欠款
网络安全第一议题
西电网络安全大学
郑州明德软件开发有限公司官网
pg数据库冷备份
去公安局做网络安全什么学历
网络安全专业大学研究生排名
服务器安装后如何激活
c数据库查询最大值
软件开发跳板机
数据库能建手机平台吗
linux服务器有显卡吗
萤石云服务器无法打开
北京世联传奇网络技术
增强网络安全意识建议
西宁彝峙网络技术有限公司
奥德采集软件开发
盈利的网络安全股票
网络安全手炒报
服务器安装后如何激活
网络安全微课展示
国企软件开发议标理由
如何做图书的数据库