C++中的虚函数总结

简称为V-Table。
在这个表
【菜科解读】
对C++ 了解的人都应该知道虚函数(Virtual Function)是通过一张虚函数表(Virtual Table)来实现的。
简称为V-Table。
在这个表中,主是要一个类的虚函数的地址表,这张表解决了继承、覆盖的问题,保证其容真实反应实际的函数。
这样,在有虚函数的类的实例中这个表被分配在了 这个实例的内存中,所以,当我们用父类的指针来操作一个子类的时候,这张虚函数表就显得由为重要了,它就像一个地图一样,指明了实际所应该调用的函数。
一、什么是虚函数、纯虚函数、抽象基类
虚函数:在某基类中声明为 virtual 并在一个或多个派生类中被重新定 义的成员函数。
纯虚函数:是一种特殊的虚函数,使用virtual关键字,并且在其后面加上=0。
抽象基类:在基类中加入至少一个纯虚函数,使基类成为抽象类。
二、为什么要使用虚函数
在理解这个问题前,就必须要理解什么是晚捆绑。
晚捆绑是相对于早捆绑而言的,那么什么又是捆绑呢?把函数体与函数调用相联系称为捆绑,当捆绑在程序运行之前完成时,这称为早捆绑。
那么当捆绑根据对象的类型,发生在运行时,就称为晚捆绑。
而使用晚捆绑,无需检查对象的类型,只需要检查对象是否支持特性和方法即可。
为了引发晚捆绑,C++要求在基类中声明这个函数时使用virture关键字。
晚捆绑只对virtual函数起作用,而且只在使用含有virtual函数的基类的地址时发生。
三、关于重写
如果一个函数在基类中被声明为virtual,那么在所有的派生类中它都是virtual,在派生类中virtual函数的重定义通常称为重写。
四、在C++中如何实现晚捆绑
虚函数主要有两个步骤:
1、每一个类产生出一堆指向虚函数的指针,放在表格中。
这个表格被称为virtual table(vtbl)
2、每一个类对象被安插一个指针,指向相关的virtual table,通常这个指针被称为vptr
结构图如下:
每当创建一个包含有虚函数的类或从包含有虚函数的类派生一个类时,编译器就为这个类创建一个唯一的vtbl。
如果在这个派生类中没有对在基类中声明为virtual的函数进行重新定义,编译器就使用基类的这个虚函数地址。
然后编译器在这个类中放置vptr。
当使用简单继承时,对于每个对象都只有一个vtbl。
vptr必须被初始化为指向相应的vtbl的起始地址。
五、虚函数的存放类型信息
假如没有虚函数,那么对象的长度就是所期望的长度:比如当个int的长度。
而带有单个虚函数的One Virtual,对象的长度是No Virtual的长度加上一个void指针的长度。
如果有一个或多个虚函数,编译器都只在这个结构中插入一个单个指针,这个指针指向虚函数表。
在32为的机器上,一个指针占3字节的空间,因此求sizeof得到4;如果是64位的机器,一个指针占8字节的空间,因此求sizeof则得到8.
六、关于抽象类和纯虚函数
1、当继承一个抽象类时,必须实现所有的纯虚函数,否则继承出的类也将是一个抽象类
2、声明一个纯虚函数,就等于告诉编译器在vtbl中为函数保留一个位置,但在这个位置不放地址。
只要有一个函数在类中被声明为纯虚函数,则vtbl就是不完全的。
3、纯虚函数禁止对抽象类的函数以传值方式调用,这是一种防止对象切片的方法。
抽象类可以保证在向上类型转换期间总是使用指针或引用。
4、对于纯虚函数,如果要创建对象,必须要在派生类中定义。
七、什么是对象切片
在继承的过程中,通常派生类不仅具有基类的特征,也具有自身的一些特征。
当派生类向上进行类型转换称为基类时,就会发生那些自身的特征被切除,只保留继承了基类的特征,这种现象就是对象切片。
例如:狗类继承了宠物类,具有宠物类的名称这个属性,同时又有啃骨头的特性,当狗类要被转换为宠物类时,就必须抛弃自己爱啃骨头的爱好,这样只保留了对应于宠物类的那部分。
流程如下:
八、虚函数和构造函数
1、由于基类构造函数总是在继承类构造函数中被调用,这就确保了在派生类中,基类的所有成员都是有效的,即所有成员都已经建立。
2、虚机制在构造函数中不工作。
有两种理由:
A、在任何构造函数中,我们只能知道基类已被初始化,但不能知道哪个类是从这个基类继承来的。
但是,虚函数在继承层次上是向前和向后调用。
它可以调用派生类中的函数。
B、构造函数的vptr的状态是由最后调用的构造函数确定的,这就意味着当最后调用的构造函数还没有完成之前,当前的构造函数完全不知道这个对象是否是基于其他类的。
但是,当这一系列的构造函数调用正发生时,每个构造函数都已经设置vptr指向它自己的vtbl,如果函数调用使用虚机制,它将只产生通过它自己的vtbl的调用,而不是最后派生的vtbl。
九、虚析构函数和析构函数
1、析构函数自最晚派生的类开始,并向上到基类。
这就意味着每个析构函数知道它所在类从哪一个类派生而来,但不知道从它派生出哪些类。
2、析构函数可以为虚函数,因为这个对象已经知道它是什么类型,但是在构造期间就不知道了。
一旦对象已被构造,它的vptr就已经被初始化,所以能发生虚函数调用。
3、虚构函数的纯虚性的唯一效果是阻止基类的实例化
十、虚函数、纯虚函数、抽象类的作用
虚函数的作用:每个类必须提供一个可以被调用的虚函数,但每个类可以按它们认为合适的任何方式处理。
如果某个类不想做什么特别的事,可以借助于基类中提供的缺省处理函数。
也就是说,虚函数的声明是在告诉子类的设计者,"你必须支持虚函数,但如果你不想写自己的版本,可以借助基类中的缺省版本。
纯虚函数的作用:让所有的类对象(主要是派生类对象)都可以执行纯虚函数的动作,但类无法为纯虚函数提供一个合理的缺省实现。
所以类纯虚函数的声明就是在告诉子类的设计者,“你必须提供一个纯虚函数的实现,但我不知道你会怎样实现它”。
抽象类的主要作用是将有关的操作作为结果接口组织在一个继承层次结构中,由它来为派生类提供一个公共的根,派生类将具体实现在其基类中作为接口的操作。
所以派生类实际上刻画了一组子类的操作接口的通用语义,这些语义也传给子类,子类可以具体实现这些语义,也可以再将这些语义传给自己的子类。
C++,中的,虚,函数,总结,对,C++,了解,的,人都,一动就大汗淋漓是肾阴虚还是阳虚
肾阴虚多表现为潮热、五心烦热;肾阳虚常见畏寒肢冷、精神萎靡。
具体鉴别需通过舌脉象及全身症状综合判断。
1、肾阴虚:肾阴亏虚时体内阴液不足,阳气相对偏亢,蒸腾津液外泄导致多汗。
典型症状包括夜间盗汗、手足心发热、午后颧红、口干咽燥,舌质红少苔,脉细数。
治疗需滋阴,常用药物包括、知柏、左归丸等。
日常应避免辛辣燥热食物,保证充足睡眠。
2、肾阳虚:肾阳不足时固摄无力,津液外泄形成自汗。
常伴畏寒肢冷、腰膝酸软、小便清长、性欲减退,舌淡胖有齿痕,脉沉迟。
治疗宜温补肾阳,可选用金匮肾气丸、右归丸、桂附地黄丸等。
需注意保暖,适当食用羊肉、韭菜等温补食物。
3、气血两虚:长期过度劳累或慢性疾病可能导致气血双亏,卫表不固而多汗。
常见气短乏力、面色苍白、心悸头晕,舌淡脉弱。
需益气固表,参考玉屏风散、生脉饮等方剂。
建议循序渐进锻炼增强体质。
4、湿热内蕴:饮食肥甘厚味或脾失健运可生湿热,熏蒸肌表致汗出粘腻。
多伴口苦口臭、肢体困重、大便粘滞,舌苔黄腻。
治疗应清热化湿,如龙胆泻肝汤、三仁汤等。
需减少油腻饮食,增加冬瓜、薏苡仁等利湿食材。
5、自主神经紊乱:长期精神紧张或更年期激素变化可能导致自主神经失调,出现阵发性多汗。
常伴情绪波动、失眠多梦等症状。
可考虑谷维素等调节植物神经药物,配合冥想、八段锦等放松训练。
建议记录每日出汗时间、诱因及伴随症状,避免剧烈运动后立即冲凉。
饮食宜选择山药、黑豆、核桃等平补脾肾的食材,出汗后及时补充淡盐水。
若调整生活方式两周无改善,或出现体重骤减、胸痛等警示症状,需及时就医排除甲亢、糖尿病等器质性疾病。
中医调理需经专业医师辨证后用药,不可自行判断体质滥用补药。
肾阴虚可以吃肾宝片吗 回答:肾阴虚可以吃肾宝片,但具体是否适合取决于自身的症状表现和体质状况,建议在医生指导下使用,同时可以通过饮食调理和健康生活方式辅助改善。
1、肾阴虚的原因及表现肾阴虚多由先天不足、长期劳累、情志失调或不健康的生活方式引起,属于中医范畴的内因性问题。
其主要表现包括腰膝酸软、失眠多梦、手足心热、口干舌燥、潮热盗汗等症状。
如果症状较轻,通常可以通过饮食和调整作息来缓解,但严重者则需系统治疗。
2、能否服用肾宝片肾宝片是一种中成药,主要成分如淫羊藿、狗脊、菟丝子等,具有补肾、温阳、益精的功效。
肾宝片在临床中主要针对肾阳虚,但部分肾阴虚患者如果存在肾阳不足或阴阳两虚情况,也可能适用。
不过,由于每个人体质不同,建议先就医明确病情,再决定是否服用,以免用药不当加重症状。
3、缓解肾阴虚的其他方法 饮食调理:多吃滋阴补肾的食物,比如黑芝麻、山药、枸杞、银耳、莲子等。
这些食材具有滋补作用,可帮助缓解肾阴虚症状。
生活习惯:规律作息,避免熬夜,多喝水,减少烟酒、辛辣食物的摄入。
适量运动,如瑜伽、太极等舒缓运动,也能调节身体状态。
药物支持:除肾宝片外,常见的中药补肾剂如六味地黄丸、知柏地黄丸也经常用于肾阴虚的改善,但需在医生的指导下选择。
为了确保安全与疗效,肾阴虚是否适合用肾宝片应根据具体的病情与体质特点而定,建议优先咨询专科日常生活中注重调理和养护,可以更好地改善肾阴虚的不适症状。
肾阴虚可以吃肾宝片吗 回答:肾阴虚可以吃肾宝片,但具体是否适合取决于自身的症状表现和体质状况,建议在医生指导下使用,同时可以通过饮食调理和健康生活方式辅助改善。
1、肾阴虚的原因及表现肾阴虚多由先天不足、长期劳累、情志失调或不健康的生活方式引起,属于中医范畴的内因性问题。
其主要表现包括腰膝酸软、失眠多梦、手足心热、口干舌燥、潮热盗汗等症状。
如果症状较轻,通常可以通过饮食和调整作息来缓解,但严重者则需系统治疗。
2、能否服用肾宝片肾宝片是一种中成药,主要成分如淫羊藿、狗脊、菟丝子等,具有补肾、温阳、益精的功效。
肾宝片在临床中主要针对肾阳虚,但部分肾阴虚患者如果存在肾阳不足或阴阳两虚情况,也可能适用。
不过,由于每个人体质不同,建议先就医明确病情,再决定是否服用,以免用药不当加重症状。
3、缓解肾阴虚的其他方法 饮食调理:多吃滋阴补肾的食物,比如黑芝麻、山药、枸杞、银耳、莲子等。
这些食材具有滋补作用,可帮助缓解肾阴虚症状。
生活习惯:规律作息,避免熬夜,多喝水,减少烟酒、辛辣食物的摄入。
适量运动,如瑜伽、太极等舒缓运动,也能调节身体状态。
药物支持:除肾宝片外,常见的中药补肾剂如六味地黄丸、知柏地黄丸也经常用于肾阴虚的改善,但需在医生的指导下选择。
为了确保安全与疗效,肾阴虚是否适合用肾宝片应根据具体的病情与体质特点而定,建议优先咨询专科日常生活中注重调理和养护,可以更好地改善肾阴虚的不适症状。
肾阴虚有哪些症状 回答:腰膝酸软,多汗,性欲减低,可以考虑服克克常规药物肾气丸,健脑补肾丸治疗,戒烟酒,不要吃刺激食物,同时可以吃狗肉、羊肉、韭菜、泥鳅来进行食补,慢慢会改善的,节制性生活,随着医疗技术的发展,中医内科杂病是可以康复的,但是治疗中医内科杂病不能盲目,有的疗法因在治疗过程中对身体造成的影响,因此患者积极去正规的医院检查,听取大夫的建议吧。
肾阴虚有哪些症状 回答:腰膝酸软,多汗,性欲减低,可以考虑服克克常规药物肾气丸,健脑补肾丸治疗,戒烟酒,不要吃刺激食物,同时可以吃狗肉、羊肉、韭菜、泥鳅来进行食补,慢慢会改善的,节制性生活,随着医疗技术的发展,中医内科杂病是可以康复的,但是治疗中医内科杂病不能盲目,有的疗法因在治疗过程中对身体造成的影响,因此患者积极去正规的医院检查,听取大夫的建议吧。
脾胃不好又阴虚该怎么办 回答:脾胃不好,并且有气血虚,建议患者平时保持良好的心情,避免生气易怒,少食辛辣刺激之品及补品等。
建议经常吃红色的食物,如红枣枸杞粥,百合红枣粥等,易上火,这种火多数是虚火,可以吃点归脾丸进行治疗,我们都知道内科疾病对患者的危害比较的,一旦发现后就该及时救治,同时患者日常中还需要重视自身的调节,并且合理饮食,病情好转后适当的运动,希望内科疾病患者可以及时得到救治! 脾胃阴虚就一定是肝肾阴虚吗 回答:脾胃阴虚一般情况下不一定就是肝肾阴虚,一般脾胃阴虚和肝肾阴虚并不是一回事,脾胃阴虚患者多数不但会出现脾虚,还有可能会出现肾虚多数主要是脾胃虚弱,而肝肾阴虚,一般多数主要是出现腰膝酸软,盗汗,潮热,头晕等症状,通常脾胃阴虚与肝肾阴虚并不是一回事 脾胃阴虚就一定是肝肾阴虚吗 回答:脾胃阴虚一般情况下不一定就是肝肾阴虚,一般脾胃阴虚和肝肾阴虚并不是一回事,脾胃阴虚患者多数不但会出现脾虚,还有可能会出现肾虚多数主要是脾胃虚弱,而肝肾阴虚,一般多数主要是出现腰膝酸软,盗汗,潮热,头晕等症状,通常脾胃阴虚与肝肾阴虚并不是一回事 肝肾阴虚火旺能吃补肺丸吗 回答:肝肾阴虚火旺不能吃补肺丸,没有明显的治疗作用,肝肾阴虚的主要治疗用药以滋阴降火为主,临床常用的有六味地黄丸,知柏地黄丸,左归丸,大补阴丸等。
在医生的指导下用药,能够改善阴虚火旺,导致的手脚心发热,睡觉出汗,大便秘结,小便黄赤等症状。
肝肾阴虚火旺能吃补肺丸吗 回答:肝肾阴虚火旺不能吃补肺丸,没有明显的治疗作用,肝肾阴虚的主要治疗用药以滋阴降火为主,临床常用的有六味地黄丸,知柏地黄丸,左归丸,大补阴丸等。
在医生的指导下用药,能够改善阴虚火旺,导致的手脚心发热,睡觉出汗,大便秘结,小便黄赤等症状。
肝肾阴虚能喝秋梨膏吗 回答:肝肾阴虚可以吃,秋梨膏有滋阴生津的作用。
但是肝肾阴虚的治疗主要是以滋阴降火为主,临床常用的药物有六味地黄丸,知柏地黄丸,左归丸等,还可以选择中草药汤剂进行对症治疗,改善症状,在治疗期间患者要注意休息,做好饮食结构的调理,不能吃辛辣刺激性的食物,不能吃肥甘厚腻以及生冷寒凉的食物,以免导致交叉感染。
肝肾阴虚能喝秋梨膏吗 回答:肝肾阴虚可以吃,秋梨膏有滋阴生津的作用。
但是肝肾阴虚的治疗主要是以滋阴降火为主,临床常用的药物有六味地黄丸,知柏地黄丸,左归丸等,还可以选择中草药汤剂进行对症治疗,改善症状,在治疗期间患者要注意休息,做好饮食结构的调理,不能吃辛辣刺激性的食物,不能吃肥甘厚腻以及生冷寒凉的食物,以免导致交叉感染。
小腿抽筋是肾阴虚的症状吗 回答:腿抽筋和肾虚一般没有关系,肾虚通常会导致身体出现失眠多梦的情况,并且还伴有记忆力减退和注意力不集中现象,通常不会引起腿抽筋症状,腿抽筋有可能是体内缺钙的原因,也有可能是局部受凉所致,但也不排除是血液循环障碍引起的,首先采取局部热敷的方式改善。
小腿抽筋是肾阴虚的症状吗 回答:腿抽筋和肾虚一般没有关系,肾虚通常会导致身体出现失眠多梦的情况,并且还伴有记忆力减退和注意力不集中现象,通常不会引起腿抽筋症状,腿抽筋有可能是体内缺钙的原因,也有可能是局部受凉所致,但也不排除是血液循环障碍引起的,首先采取局部热敷的方式改善。
肝肾阴虚可吃鸽子吗 回答:肝肾阴虚可以吃鸽子,的肝肾阴虚是体内津液不足,导致适当的添加营养,对于病情的恢复有帮助,鸽子的营养价值比较高,所以肝肾阴虚的患者可以适量的吃一些,能够起到补肾补气血的作用,但是鸽子肉并不能改善肝肾阴虚的症状,肝肾阴虚需要通过滋阴降火的药物进行对症治疗,改善症状。
肝肾阴虚可吃鸽子吗 回答:肝肾阴虚可以吃鸽子,的肝肾阴虚是体内津液不足,导致适当的添加营养,对于病情的恢复有帮助,鸽子的营养价值比较高,所以肝肾阴虚的患者可以适量的吃一些,能够起到补肾补气血的作用,但是鸽子肉并不能改善肝肾阴虚的症状,肝肾阴虚需要通过滋阴降火的药物进行对症治疗,改善症状。
脾阴虚有痰湿喝黄精泡水行吗 回答:脾阴虚痰湿,这种情况和黄精泡水对于病情没有太大的作用,长时间还有可能会导致对于身体受到一些影响。
患者如果想要改善痰湿,可以多吃一些薏米,莲子,百合,这些食物对于改善痰湿有作用的患者期间,一定要进行计算机就不要熬夜,可以服用健脾丸再配合参苓白术散来进行调理改善,对于痰湿有一定的治疗作用。
脾胃虚寒就是脾阳虚吗 回答:脾胃虚寒出现了这个症状,在中医学就基本上认定为脾阳虚的表现。
脾阳虚就会表现出一派的虚寒现象,比如会出现胃脘部的疼痛,并且这种疼痛是以冷冷作痛为主要表现。
并且缠绵不休经常发作,会出现腹胀、腹痛,还会出现消化不良,大便溏薄的现象。
进食了一些温热性的食物就可以得到缓解,吃一些凉的东西就会出现疼痛,并且会伴有腹泻。
在日常生活中就应该多吃温热,少吃寒凉。
肝肾阴虚可以加强锻炼吗 回答:肝肾阴虚患者平时的时候可以锻炼,但是不建议加强锻炼,因为过度的劳累有可能会导致患者出现肝肾阴虚的现象加重,平时的时候适当的锻炼身体,可以帮助肝肾阴虚更快的恢复,或者是在医生的指导下,通过口服药物的方式,也可以有效的治疗肝肾阴虚引起的症状。
肝肾阴虚可以加强锻炼吗 回答:肝肾阴虚患者平时的时候可以锻炼,但是不建议加强锻炼,因为过度的劳累有可能会导致患者出现肝肾阴虚的现象加重,平时的时候适当的锻炼身体,可以帮助肝肾阴虚更快的恢复,或者是在医生的指导下,通过口服药物的方式,也可以有效的治疗肝肾阴虚引起的症状。
肝肾阴虚睡觉能补过来吗 回答:肝肾阴虚可以通过睡觉得到一定的缓解,但是并不能补回来。
对于肝肾阴虚的人群,最好通过中药进行调理,可以应用六味地黄丸或杞菊地黄丸,知柏地黄丸等进行治疗。
当患者出现腰膝酸软,头晕耳鸣,手脚心发热时一定要对症用药,再加上饮食和作息的调理,才能得到缓解和改善。
身体虚弱