c++中关于重载、隐藏与覆盖

编译器内部标识符

重载的定义和意义

      在C++程序中,可以将语义、功能相似的几个函数用同一个名字表示,即函数重载,如下程序所示。但它们互相之间参数不同,这样便于记忆,提高了函数的易用性,这是C++语言采用重载机制的一个理由。 C++语言采用重载机制的另一个理由是:类的构造函数需要重载机制。因为C++规定构造函数与类同名,构造函数只能有一个名字,但有时候我们需要几种方法构造对象。

关于重载与覆盖

重载的实现方法

      只能靠参数而不能靠返回值类型的不同来区分重载函数。编译器根据参数为每个重载函数产生不同的内部标识符。例如编译器为上节中的三个Eat函数产生象_eat_beef、eat_fish、_eat_chicken之类的内部标识符(不同的编译器可能产生不同风格的内部标识符)。

      说到这里,要提到一个常见的笔试面试题了:如果C++程序要调用已经被编译后的C函数,该怎么办?

      C++程序不能直接调用已编译后的C函数的,这是因为名称问题,举个例,一个函数叫做void foo(int x, int y),该函数被C编译器编译后在库中的名字为_foo,而C++编译器则会产生像_foo_int_int之类的名字用来支持函数重载和类型安全连接,名称就不一样,因此不能直接调用的。那要调用的话怎么办呢?

      C++提供了一个C连接交换指定符号extern“C”来解决这个问题。


成员函数被重载的特征:

    (1)相同的范围(在同一个类中);

   (2)函数名字相同;

   (3)参数不同;

   (4)virtual关键字可有可无。

覆盖是指派生类函数覆盖基类函数,特征是

   (1)不同的范围(分别位于派生类与基类);

   (2)函数名字相同;

   (3)参数相同;

   (4)基类函数必须有virtual关键字。


关于隐藏:这里“隐藏”是指派生类的函数屏蔽了与其同名的基类函数,规则如下:

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

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


乐播投屏是一款简单好用、功能强大的专业投屏软件,支持手机投屏电视、手机投电脑、电脑投电视等多种投屏方式。 多端兼容跨网投屏:支持手机、平板、电脑等多种设备之间的自由组合投屏,且无需连接 WiFi,通过跨屏技术打破网络限制,扫一扫即可投屏。 广泛的应用支持:支持 10000+APP 投屏,包括综合视频、网盘浏览器、美韩剧、斗鱼、虎牙等直播平台,还能将央视、湖南卫视等各大卫视的直播内容一键投屏。 高清流畅投屏体验:腾讯独家智能音画调校技术,支持 4K 高清画质、240Hz 超高帧率,低延迟不卡顿,能为用户提供更高清、流畅的视觉享受。 会议办公功能强大:拥有全球唯一的 “超级投屏空间”,扫码即投,无需安装。支持多人共享投屏、远程协作批注,PPT、Excel、视频等文件都能流畅展示,还具备企业级安全加密,保障会议资料不泄露。 多人互动功能:支持多人投屏,邀请好友加入投屏互动,远程也可加入。同时具备一屏多显、语音互动功能,支持多人连麦,实时语音交流。 文件支持全面:支持 PPT、PDF、Word、Excel 等办公文件,以及视频、图片等多种类型文件的投屏,还支持网盘直投,无需下载和转格式。 特色功能丰富:投屏时可同步录制投屏画面,部分版本还支持通过触控屏或电视端外接鼠标反控电脑,以及在投屏过程中用画笔实时标注等功能。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值