千家信息网

C++中三个容易混淆的概念是什么

发表于:2025-11-18 作者:千家信息网编辑
千家信息网最后更新 2025年11月18日,本篇内容介绍了"C++中三个容易混淆的概念是什么"的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!JAV
千家信息网最后更新 2025年11月18日C++中三个容易混淆的概念是什么

本篇内容介绍了"C++中三个容易混淆的概念是什么"的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!

JAVA中语言中方法(函数)调用有两种特殊的形态:重载重写;而C++由于增加了virtual这个虚函数关键字,给函数调用又增加了变数:除了重载、重写(也称覆盖)之外还多了隐藏这么一说。

我相信我们绝大多数人写代码时,为了程序的可读性与赶速度的原则,下意识的避开这些类似于脑筋急转弯的语法,尽量使用不同的函数名来区分基类与派生类的函数(当然,不能避开的时候也是非常多的)。

可是有时候,有些面试主考官总喜欢拿这三个概念去为难你,考察你的C++基础是否牢固。所以为了面试、这三个概念还是需要我们去区分一下。


1、重载的特征:在同一个类中;函数名字相同;参数不同;virtual 关键字可有可无。

2、重写(覆盖)特征是:分别位于派生类与基类;函数名字相同;参数相同;基类函数必须有virtual 关键字(这点非常要注意)。

个人认为以上两点比较容易记得住,但是C++的隐藏规则使问题复杂性陡然增加。规则如下:

1、如果派生类的函数与基类的函数同名,但是参数不同。此时,不论有无virtual关键字,基类的函数将被隐藏(注意别与重载混淆)。

2、 如果派生类的函数与基类的函数同名,并且参数也相同,但是基类函数没有virtual关键字。此时,基类的函数被隐藏(注意别与重写混淆)。

说了这么多绕口令,恐怕不容易理解,看个简单的例子吧:

class A{  public:  void f(int a);  };  class B: public A{  public:  void f(char *p)  };  void main(){  int i = 1;  B b;  A *pa = &b;  B *pb = &b;  pa->f(i);//调用父类A的方法;  pb->f(i);//这里呢?调用的哪里的方法?  };

按照习惯性思维,觉得main函数中指针pb会调用父类的方法,其实不对,隐藏发生了作用啦,此处符合隐藏的的条件1,所以这里父方法被隐藏掉了,调用的子类的方法,由于参数类型不匹配,编译器直接报错!!

"C++中三个容易混淆的概念是什么"的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识可以关注网站,小编将为大家输出更多高质量的实用文章!

函数 方法 C++ 关键 关键字 参数 三个 概念 相同 不同 内容 名字 更多 特征 知识 规则 不对 复杂 牢固 特殊 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 北京服务器机柜规格尺寸 银河麒麟服务器怎么改ip地址 精锐达网络技术有限公司 软件开发师是属于行业 造梦西游OL服务器不一样 互联网科技助推汽车金融 深圳电话软件开发具体地址 网络技术高级工程师专业学历 传媒公司软件开发 无纸化系统管理服务器 红外智能测温仪怎么连接大数据库 淮安市网络安全大队领导班子 服务器日志审计 怎么启动静态资源服务器 软件开发用的联想笔记本 河南省蓝碟软件开发有限公司 网络安全 主动防御 通州区应用软件开发服务价钱 无锡企业软件开发销售 东城区戴尔四路机架式服务器 雄安互联网科技园规划 起点服务器炸了吗2022 零基础软件开发的书籍推荐 移动服务器连接不上lol 软件开发项目部人员组成 is打开服务器连接失败 War数据库 手机一到晚上就无法连接服务器 汽车车载网络技术 网关 亚控科技软件开发岗面试
0