问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

【C++】继承&虚函数

发布网友 发布时间:2024-10-01 10:22

我来回答

1个回答

热心网友 时间:2024-10-23 09:37

继承机制在C++中用于实现更高层次的重用性,通过继承已有的类派生出新的类,这通常比设计新类要容易很多。借助继承,我们无需复制原始类代码,只需提供新特性,即使不访问源代码也可以派生出类。简单继承中,派生类的构造函数会首先调用基类的构造函数,然后调用自身构造函数。若未在成员初始化列表中提供基类构造函数,则默认调用基类的默认构造函数。派生类析构时,先调用派生类析构函数,然后基类析构函数。

基类指针和引用与派生类对象体现了多态性,即基类指针或引用只能用于调用基类方法。通过引用兼容性,可将基类对象初始化为派生类对象,如使用派生类对象初始化基类对象。基类对象可以同时指向基类和派生类对象,这利用数组表示多种类型对象的特性,实现多态性。

公有继承建立一种“is-a”关系,即派生类对象同时也是基类对象,能执行基类对象的所有操作。公有继承是最常用的继承方式。基类中可定义虚方法(virtual),用于在基类指针和引用指向派生类时,根据对象类型调用相应版本的虚函数。虚函数的实现由编译器决定,通常通过为每个对象添加隐藏成员,保存指向函数地址数组的指针,即虚函数表(virtual function table)。

虚函数的存在因编译期间无法确定具体调用对象而引入,虚函数表在内存和执行速度方面带来成本。构造函数不能是虚方法,因为创建派生类对象时,首先调用基类构造函数,然后派生类构造函数使用基类构造函数。析构函数应当是虚函数,除非类不作为基类使用。友元不能是虚函数,但可通过使用虚成员函数解决设计问题。如果派生类没有重新定义虚函数,则使用基类版本。重新定义将隐藏基类方法,但不会生成函数的两个版本。

程序调用函数时,编译器在静态联编中通过查看函数参数和名称确定使用哪个函数代码块。然而,虚函数使这项工作在动态联编中更为复杂,要求编译器生成能够在运行时选择正确虚方法的代码。动态联编增加了处理开销,但静态联编更合理且效率更高,因此通常作为C++的默认选择。

保护成员在外部世界与私有成员相似,但在派生类中与公有成员相似。使用保护数据成员简化了代码编写,但存在设计缺陷,因为派生类中这些保护成员变为公有、可访问。抽象基类(ABC)通过纯虚函数提供未实现的函数,要求具体派生类覆盖纯虚函数,确保组件设计遵循接口规则。

在考虑对派生类进行构造、析构等操作时,需考虑基类的构建。如果基类使用了动态内存分配,并重新定义了赋值和复制构造函数,则在操作派生类时需注意。

公有继承的考虑因素包括继承层次、访问控制、多态性、虚函数的使用与注意事项、构造和析构时的基类操作,以及抽象基类的设计。在设计类结构时,理解这些考虑因素有助于创建灵活、可扩展且易于维护的代码。
c加加是什么

开始,C++是作为C语言的增强版出现的,从给C语言增加类开始,不断的增加新特性。 虚函数(virtualfunction)、运算符重载(OperatorOverloading)、多重继承(MultipleInheritance)、模板(Template)、异常(Exception)、RTTI、命名空间(NameSpace)逐渐被加入标准。 抢首赞 已赞过 已踩过< 你对这个回答的评价是? 评论 分享...

请问C++中的引用符号“&”到底怎么使用?

1,取地址 int i=1;int pi=&i;2,位运算,表求按位与 int a=1,b=3;int c=a&b;3,引用 int a;int &b=a;//b是a的引用,b等同于a

c++和c语言有什么区别啊?那我们单片机用什么编程啊?

对语言本身而言,C是C++的子集,那么是什么样的一个子集?从上文可以看出, C实现了C++中过程化控制及其它相关功能,而在C++中的C(我称它为“C+”),相对于原来的C还有所加强,引入了重载、内联函数、异常处理等等玩艺儿,C++更是拓展了面向对象设计的内容,如类、继承、虚函数、模板和包容器类...

c语言与cnbsp;++

即是著名的ANSInbsp;C。 1978年由美国电话电报公司(ATamp;amp;T)贝尔实验室正式发表了C语言。同时由B.W.Kernighan和D.M.Ritchit合著了著名的“THEnbsp;Cnbsp;PROGRAMMINGnbsp;LANGUAGE”一书。通常简称为《Kamp;amp;R》,

编程<-- Vtable什么意思

Vtable,虚函数表,编译器会为每个有虚函数的类创建一个虚函数表,该虚函数表将被该类的所有对象共享。类的每个虚成员占据虚函数表中的一行。如果类中有N个虚函数,那么其虚函数表将有N*4字节的大小。基类有一个这样的表,它里面放了它自己的虚函数指针。派生类也继承了这个表,如果在派生类里改变...

JAVA.包 JAVA类 JAVA APPLET ...等跟JAVA挨得上边得都要!

5. 请讲一讲析构函数和虚函数的用法和作用。6. Error与Exception有什么区别?Error表示系统级的错误和程序不必处理的异常,Exception表示需要捕捉或者需要程序进行处理的异常。7. 在java中一个类被声明为final类型,表示了什么意思?表示该类不能被继承,是顶级类。8. 描述一下你最常用的编程风格。9. heap和stack有...

java是什么?怎么念?

Java语言提供类、接口和继承等原语,为了简单起见,只支持类之间的单继承,但支持接口之间的多继承,并支持类与接口之间的实现机制(关键字为implements)。Java语言全面支持动态绑定,而C++ 语言只对虚函数使用动态绑定。总之,Java语言是一个纯的面向对象程序设计语言。 3、Java语言是分布式的。Java语言支持Internet应用的开发...

C++语言是什么啊?

一开始C++是作为C语言的增强版出现的,从给C语言增加类开始,不断的增加新特性。虚函数(virtual function)、运算符重载(operator overloading)、多重继承(multiple inheritance)、模板(template)、异常(exception)、RTTI、名字空间(name space)逐渐被加入标准。1998年国际标准组织(ISO)颁布了C++...

有人知道C++吗?是C语言难还是C++难?

一开始C++是作为C语言的增强版出现的,从给C语言增加类开始,不断的增加新特性。虚函数(virtual function)、运算符重载(operator overloading)、多重继承(multiple inheritance)、模板(template)、异常(exception)、RTTI、名字空间(name space)逐渐被加入标准。1998年国际标准组织(ISO)颁布了C++...

被继承的虚函数还是虚函数吗 从虚基类继承的函数都是虚函数 虚函数与虚继承 构造函数和析构函数可以被继承 虚函数可以继承吗 虚函数可以被派生类继承吗 对于从基类继承的虚函数 虚函数是否具有继承性 从虚基类继承的函数
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
为什么我更新了win7QQ拼音在游戏上(剑侠情缘2)不能打字?打出来的都是... 游漓江的船票在哪里买最方便?如何去 因为我想看剑侠情缘,又不想下载什么PPS啊,QQ直播之类软件, 最好是类似... ...两部手机下载相同的手游剑侠情缘却是不一样的都是在QQ上下载的 教子小书坊:一位外交官父亲给孩子的家书图书信息 教子小书坊:一位外交官父亲给孩子的家书内容简介 高二孩子和家长逆反如何教育 高二孩子和家长逆反怎么办 叛逆期孩子怎么教育沟通叛逆期孩子如何教育沟通 请问用otg连接鼠标和键盘后怎么玩手机上的全民枪战,求教程。带图的给... 去邮局寄包裹的步骤是怎么样?我没去做.不好意思问下大家 古风很唯美的句子 普洱茶能放多少年就不能喝了 仙剑奇侠传1的哪一集是赵灵儿被李逍遥和林月如误会并打倒? 仙剑奇侠传一:哪位仁兄发个神树林的图吧,火麟洞的也要啊 仙剑1不容易发发现的有趣地方 谁有这篇仙剑的文章全部 竹的象征意义是什么 竹的象征意义是什么 竹代表什么 竹代表的意义与象征 竹代表什么象征意义 工程地质及土力学图书目录 工程地质与土力学基础内容简介 马斯克称燃料电池是智商税 买了一条修身牛仔裤,裤头还好就是裤腿太紧了,好像很有弹性有木有办法... 如何获取iPhone手机的UUID? 客户满意度的主要衡量指标有哪些? 指标评价的指标有哪些内容 做网页时,建立超连接后,如何在新窗口中打开网页? 求在新窗口打开网页的代码,如何插入target="_blank" 怎么在新的窗口打开网页? target="_blank" 除外 酷睿i53570K可以关闭集显吗,我有独立显卡 韦拔群纪念馆参观活动 C++虚函数详解(转载) 慢性前列腺炎吃什么药效果比较好呢?谢谢了,大神帮忙啊 ...药能治好前列腺炎,效果最好,谢谢亲们大神们帮帮忙 前列腺炎中医治疗多长时间能治好?有没有起效特别快的中药?谁知道了介绍... 20万左右suv口碑最好的车 20万左右有什么好车 老公有前列腺炎会不会传染老婆?大神们帮帮忙 喝什么茶治前列腺炎大神们帮帮忙 国考职位表面试比例为3:1的,怎么知道有几个人会有机会面试呢? windows平台下,有什么好的分屏软件推荐? 三星R467的笔记本,我锁了密码,结果重新启动就开不了机了,怎么办,求解... 支付宝给别人充话费怎么查号码 三星R467怎么一键恢复? 静夜思扩写散文 静夜思写成散文 赴香港酒店打工12000港币可信吗? 液态食品的包装机 梦见母亲溺水身亡什么意思 食品加工机器有哪些 有盐桥存在时电解质溶液应该用什么 十二指肠是什么部位