首页

文章

c++虚函数的说明

发布网友 发布时间:2022-03-18 00:38

我来回答

3个回答

热心网友 时间:2022-03-18 02:07

首先,简单说明一下有关虚函数的语法知识,如下:
第一:所谓虚函数,就是前面加了virtual的函数。(记住:只要加了virtual的,肯定是虚拟函数;前面没有加virtual的,有些是,有些不是,详细解释看下面);
第二:虚函数是C++实现多态机制的体现;并且要让虚函数起作用,必须有类继承体系,其中派生类override(重写)虚函数实现体;
第三:在一个类继承体现中,如果一个函数Fun前面加了virtual,并且第一次出现在一个类A中,那么这个函数肯定是虚函数,如果这个类A的派生类(不管是第几层派生)中,出现这个相同名字的Fun函数,不管这个函数前面有没有virtual,这个函数都是虚函数,并且称为“这个类override了虚拟函数Fun”。

简言之,虚拟函数是在继承体系中的某一个类中,第一次在声明时,函数前面出现virtual的那个函数。这个类之上的基类中具有相同名字但前面没有virtual的函数不是虚拟函数,而这个类之下的派生类中的相同名字的函数(不管前面有没有virtual)都是对这个虚函数的override。

理解一个虚函数,应该在一个继承体系中去理解,不能独立地说这个虚函数归属于哪一个具体的类。而应该理解为:这个虚函数在哪个类中第一次被声明为虚函数,哪些派生类override了这个虚函数。
如果想深入理解虚函数,以及虚函数如何起作用,需要知道“virtual table”。(你网上查吧)

下面回答你列举的问题。
1。肯定不是虚函数了。基类和派生类中具有相同的声明式的函数,前面没有virtual,这叫overwrite(覆盖)。注意分清overwrite和override的区别。(网上搜索一下,很多解释)
2。对,基类中加了virtual,派生类中的相同声明式的函数(不管前面有没有virtual)也会被说明为虚拟函数。
3。若派生类中有virtual,而基类中没有,基类中的不是虚函数,派生类中的肯定是;
4。这个类继承体系中,没有多态。所以都是overwrite的问题。
C c;
B d;
c.func(); // 调用C中的
c.B::func();// 调用B中的
c.A::func();// 调用A中的
A&a=d;
a.func(); // 调用A中的,虽然使用了&引用,因为不是虚拟函数,不会调用B中的
B&b=c;
b.func(); // B的
b.B::func(); // B的
简单言之,就是看调用中,这个对象是哪个类就调用哪个类中的函数。如果你明确指定哪个基类,就调用你指定的那个。
因为这里面没有多态(也就是没有virtual),只根据对象所属哪个类来调用。
5。在a类的func()前加virtual时b,c类是虚涵数
6。在b类的func()前加virtual时a中的不是虚函数,c类中的是虚涵数;
7。在c类的func()前加virtual时a,b类都不是虚涵数

热心网友 时间:2022-03-18 03:25

1.不是的
2.是覆盖
3.不
in c
in b
in a
in b
in c
in c
5。在b里面是,c不是!
6.a里面不是,c里面是!
7.都不是

热心网友 时间:2022-03-18 05:00

1、不是;
2、是;
3、不是;
4、结果是:
int c
int b
int a
int a
int b
int b
5、是
6、不是
7、不是
历史要怎么读,有啥诀窍 高中历史诀窍 年终会活动策划方案 深度解析:第一财经回放,探索财经新风向 逆水寒手游庄园怎么邀请好友同住 逆水寒手游 逆水寒不同区可以一起组队吗? 逆水寒手游 逆水寒怎么进入好友世界? 逆水寒手游 逆水寒怎么去别人的庄园? 使用puppeteer实现将htmll转成pdf 内卷时代下的前端技术-使用JavaScript在浏览器中生成PDF文档 【译】将HTML转为PDF的几种实现方案 变形金刚08动画怎么样 变形金刚08动画的问题 变形金刚08动画日语版剧情介绍 高分!换显卡nvidia控制面板被我卸了,重新安装显卡驱动后没了nvidia控... 我的nvidia控制面板被卸载了 怎么找回啊 卸载后 这个画面看着很奇怪_百 ... 李卓彬工作简历 林少明工作简历 广东工业职业技术学院怎么样 郑德涛任职简历 唐新桂个人简历 土地入股的定义 ups快递客服电话24小时 贷款记录在征信保留几年? 安徽徽商城有限公司公司简介 安徽省徽商集团新能源股份有限公司基本情况 安徽省徽商集团有限公司经营理念 2019哈尔滨煤气费怎么有税? 快手删除的作品如何恢复 体育理念体育理念 有关体育的格言和理念 什么是体育理念 万里挑一算彩礼还是见面礼 绿萝扦插多少天后发芽 绿萝扦插多久发芽 扦插绿萝多久发芽 炖牛排骨的做法和配料 网络诈骗定罪标准揭秘 “流水不争先”是什么意思? mc中钻石装备怎么做 为什么我的MC里的钻石块是这样的?我想要那种。是不是版本的问题?如果是... 带“偷儿”的诗句 “君不见巴丘古城如培塿”的出处是哪里 带“奈何”的诗句大全(229句) 里翁行()拼音版、注音及读音 带“不虑”的诗句 “鲁肃当年万人守”的出处是哪里 无尘防尘棚 进出口报关流程,越详细越好。谢谢大家指教。 双线桥不是看化合价升多少就标多少的吗?为什么CL2+2KI=2KCL+I2中I失... 面向对象多态机制中,多个子类以不同的方式实现了父类里的虚函数,子类对象要调用父类中的虚函数时,父类 c/c++高手帮忙!!!c++中的virtual函数究竟是怎么实现的,用 C 语言表达出来,代码请加注释。 c加加多态的种类,各自实现的机制 虚函数的实现方式和C语言中的哪个数据类型相似 C语言问题虚函数的问题 C++中虚函数的作用是什么?它应该怎么用呢? c++中,虚函数的运行机制是什么 谁知道 C++ 中 虚函数的工作机制???? 求问,C++中纯虚函数的实现原理是什么,即C++通过什么样的机制来实现这个功能的?不是问它的作用是什么。 手机突然从4G变成E是什么意思? 4G网上的好好的,突然变成“E”是啥意思 Viⅴo27移动4g变成e怎么解决? 苹果4G变E了怎么切换回来? 为什么手机网络突然从4G变成一个E了 手机信号突然从4G变成“E”,这是啥意思? 4G变e怎么变回来 华为手机4g变e怎么恢复 我的手机从4G变成了E后在信号强的地方都不自动转换成4G怎么办 手机突然连不上4g网络变成了E是什么意思 手机4g信号变成了E而且变不回来了 c++中什么是实函数 什么是虚函数 Objective-C有虚函数的概念吗? C++虚函数问题,续函数如何运行的机制 C++中虚函数的作用是什么?定义是什么?简要说明下,并举一个简单的例子? c++虚函数是干什么的?我没看懂,谁能给我讲一下 在C++中用虚函数的作用是什么?为什么要用到虚函数 c 虚函数的作用举例? 苹果7查询序列号出现无法验证产品购买日期是怎么回事啊 苹果序列号无法验证购买日期怎么办? 买的apple airpodspro官网查询序列号之后显示购买日期未验证是什么意思? 苹果序列号无法验证购买日期怎么办 官网查询序列号,提示让我验证购买日期是什么鬼 苹果序列号验证提示我们无法验证您产品的购买日期。是什么意思,这机器是翻新机吗 苹果耳机序列号显示购买日期未验证 苹果12序列号查询显示购买日期未验证? 苹果耳机序列号显示无法验证购买日期 新买的苹果8P,用了一天,查序列号显示,我们无法验证您产品的购买日期 苹果手机查询序列号提示需要验证购买日期,这是怎么回事? 新macbook查序列号显示“购买日期未验证”有没有问题? 苹果官网序列号查询需要提供购买时间但是显示无法完成请求是什么意思
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com