C++函数名字重写、重载、重定义程序实例

【菜科解读】
C++中经常出现函数名字一样,但参数列表或返回值不同的函数,要搞清楚函数的正确调用关系,需理清三个概念:重写(override)、重载(overload)、重定义(redefine)。
一、三个基本概念
1、重定义(redefine):派生类对基类的成员函数重新定义,即派生类定义了某个函数,该函数的名字与基类中的函数名字一样。
特点:(1)不在同一个作用域(分别位于基类、派生类) (2)函数的名字必须相同 (3)对函数的返回值、形参列表无要求
特殊情况:若派生类定义的该函数与基类的成员函数完全一样(返回值、形参列表均相同),且基类的该函数为virtual,则属于派生类重写基类的虚函数。
作用效果:若重新定义了基类中的一个重载函数,则在派生类中,基类中该名字的函数(即其他所有重载版本)都被自动隐藏,包括同名的虚函数。
2、重载(overload):函数名字相同,但它的形参个数或者顺序,或者类型不同,但是不能靠返回类型来判断。
特点:(1)位于同一个类中 (2)函数的名字必须相同 (3)形参列表不同(可能是参数个数 or 类型 or 顺序 不同),返回值无要求
特殊情况:若某一个重载版本的函数前面有virtual修饰,则表示它是虚函数。
但它也是属于重载的一个版本
不同的构造函数(无参构造、有参构造、拷贝构造)是重载的应用
作用效果和原理:编译器根据函数不同的参数表,将函数体与函数调用进行早绑定。
重载与多态无关,只是一种语言特性,与面向对象无关。
3、重写(override):派生类重定义基类的虚函数,即会覆盖基类的虚函数 (多态性)
特点:(1)不在同一个作用域(分别位于基类、派生类) (2)函数名、形参列表、返回值相同 (3)基类的函数是virtual
特殊情况:若派生类重写的虚函数属于一个重载版本,则该重写的函数会隐藏基类中与虚函数同名的其他函数。
作用效果:父类的指针或引用根据传递给它的子类地址或引用,动态地调用属于子类的该函数。
这个晚绑定过程只对virtual函数起作用
具体原理是由虚函数表(VTABLE)决定的,在第三节介绍。
二、程序实例
1、两个类:基类(取名Test)和派生类(取名XX) 名字不规范,哈哈随便取得!
基类和派生类的结构
//Base classclass Test{public: int a; Test() { coutf(10,20);//调用的是派生类的函数,发生多态 return 1;}
分析:(1)test 1中进行了重载测试,根据传递参数的不一样,调用不同的函数 (早绑定,与多态无关)
(2)test 2中Test b = d;定义了一个基类对象,用派生类对象来进行初始化。
这会调用基类的拷贝构造函数,生成基类的对象b,基类的拷贝构造函数初始化b的VPTR,指向b的VTABLE。
因此所有的函数调用都只发生在基类,不会产生多态。
这是一个对象切片过程(参见《C++编程思想.第二版》P370),对象切片是当它拷贝到一个新的对象时,会去掉原来对象的一部分,而不是像使用指针或引用那样简单地改变地址的内容。
(3)test 3和test 4中,定义的基类指针和引用,故会发生多态。
三、晚绑定原理:虚函数表
编译器会对每一个包含虚函数的类(或者从包含虚函数的基类派生的类)创建一个表(VTABLE),里面存放特定类的虚函数的地址。
然后编译器秘密地放置一指针vpointer(VPTR),指向这个对象的vtable。
当通过基类指针做虚函数调用时(即多态调用时),编译器静态地插入能取得这个VPTR并在VTABLE表中查找函数地址的代码,这样就能调用正确的函数并引起晚绑定的发生。
C++,函数,名字,重写,、,重载,重,定义,程序,C++,姓陶帅气文雅名字大全 文雅帅气的男生名字
陶谦早年在徐州担任县令,后来因为不满袁绍的统治,,于是辞官归隐。
在他死后,曹操接管了徐州,成为了徐州牧。
曹操的一生可以说是非常传奇的,他一生征战无数,打下了偌大的江山,最后却落得个身死国灭的下场。
那么问题来了,如果曹操当初没有离开徐州,而是继续留在徐州,他能够统一天下吗?答案是不能。
这一期名字可以说是公务员专享好名啦。
“一身正气为人,两袖清风处世”是对光明磊落、为官清廉的最好诠释。
那么就来看看我为未来体制内的宝宝们起的端正好名吧~政川“洛川真气上,重泉惠政融。
”——《伤祝阿王明府》政,有政治、政府之意,这个字带有稳重、自信、从容等气质,寓意宝宝有领导力,考虑长远。
川,原指平原,代表着开阔、平顺,寓意心胸宽广,豪迈不羁。
政川二字相得益彰,寓意宝宝能力出众,一马平川。
推荐姓氏:徐 李 王 顾 段峻尚峻,有严厉苛刻之义,以峻入名,意在时刻提醒宝宝严格的约束自己。
尚,尊崇、注重,代表着品德纯洁,尊贵高雅。
峻尚,克明峻德,兼权尚计,寓意追求崇高的精神境界,养成高尚的道德品质。
推荐姓氏:韩 方 袁 任 岑 薛文庭文,文化辞采,代表着智慧和表达,寓意才华横溢,文采斐然。
庭,原指厅堂,给人光亮、通透的感觉,寓意宝宝为人正直,有浩然之气。
文,也有温和之义,与庭结合,形成了风度翩翩、洒脱不凡的气质。
推荐姓氏:赵 杨 汪 邵 徐 凌谨尧谨,慎重、小心,也可引申为恭敬,寓意宝宝为人认真细致,办事一丝不苟。
尧,代表着高贵和明智,用于人名非常大气,同时寓意宝宝卓越出众,器宇不凡。
单看尧字或许会有些强势,但谨在某种程度上很好的控制了尧的张扬,谨尧这个名字就像是低调的实力派。
推荐姓氏:沈 郑 杨 朱 冯钧也“夫先王之制钟也,大不出均,重不过石 。
”——《风俗通义·钟》钧,在古代是一种计量单位。
诗句意思是,钟的重量刚刚好,不会过大也不会过小,代表公平公正,寓意宝宝待人平等,内心和允。
此外,钧也,君也,希望宝宝成为一身正气、两袖清风的正人君子。
推荐姓氏:钟 万 陆 闻 魏律言律,法则、规章,清规戒律,寓意宝宝有很强的道德感和自我约束力。
言,指说话,用于人名可引申为诚信、聪慧,寓意宝宝言出必行,高明远见。
律言,金科玉律,谨言慎行,希望宝宝立身正直,做事严谨。
推荐姓氏:唐 倪 彭 宋 成 戴宜知“悌于长,宜先知。
” ——《三字经》宜,原义适合、适当,也引申为应该、应当,寓意宝宝明是非,辨善恶,与人相处愉快舒适。
知,学识、学问,代表见解、聪慧,寓意博古通今,学识丰富。
宜知,寓意宝宝尊敬有爱、谦让慎独。
推荐姓氏:吴 郑 陶 章 沐墨清墨,指写字绘画用的黑色颜料,用在名字中意指学识、才华,寓意宝宝成为博学多才、满腹经纶之人。
清,单纯不杂、纯净无暇,寓意宝宝清正高洁,公正不阿。
墨与清,看似对立的两个字放在一起却不违和,相互交织的黑白两面,不正是太极哲学的体现。
推荐姓氏:林 万 江 许 陆 项
宇辰这个名字的寓意 男孩宇辰这个名字的寓意
但是这个名字听起来有点拗口,所以很多家长都不喜欢欢,但是如果给孩子取一个好听的名字,就会让孩子受益终生。
下面我们就来看看有哪些好听的名字吧。
“梓”字是一个非常美好的字,代表表着美好的寓意,也是一个比较吉利的名字。
吴宇辰这个名字的寓意?宇有宇宙、屋宇的意思,辰指星辰、星光,名字宇辰的寓意是非常好的,有宇宙星辰的含义。
宇在字典中的含义是非常多的,有指浩瀚的宇宙,也有屋宇横梁的意思,当然在名字中更多的是取其广阔的宇宙之义。
辰是指夜晚星辰的含义,在黑暗中闪闪发光、很光明的象征,所以宇辰这两个字组合取名寓意是非常好的。
包含了父母希望孩子在未来与众不同,能发光发彩的美好心愿。
寓意是:宇宙般的内心强大,辰阳般的灿烂人生。
yu字音的男宝宝名字?钰祥瑜瑕玉润金羽宇辰昊煜诚瑜羽佳玉汝于成喻,钰,宇,禹,渝,誉,屿,羽,瑜,裕,煜,毓,榆,昱,於,豫,彧,峪,嵛,宇,嵛……宇辰 宇晨 雨辰 雨晨 哪个含义好一些?麻烦并说一下它们的含义?谢谢!宇晨好,宇:寓意万物;晨:寓意开始、希望。
宇晨:万物之始,充满希望,如果你老婆姓陈就更完美了,与陈,我老婆就姓陈,我儿子叫王宇晨,当初取名字就是按这两个思路来取的。
辰字是比晨字还要好一些范围要广泛一些的,菜叶说说,所以宇辰比宇晨的名字要好上一点的。
宇辰这个名字的寓意是很好的。
首先宇字代表了房屋、空间、疆土等等,是一个极为贵气的词,往往能够预示着至高无上的地位,而辰字则代表了帝王,寓意着极贵的命相。
所以宇辰这个名字就寓意着宝宝的将来会成为一个地位崇高的富贵之人,故而这个名字的寓意是很好的,很适合作为名字。
晨字的本意是指早晨,在命理学中通常寓意着新生的希望,代表着宝宝的将来前途充满了希望,各方面都运势都会不断进步。
取有内涵文化的名字方法:1、参考诗句取名字先不说诗句中取名字的内涵文化,但从音律、意境上看,大多数的诗句都非常的适合用来取名,选择其中美好的字词用作名字,还能显示出文化修养。
2、依据典故取名依据古时文献中的知识或者故事选择取名字,也会是很有文化修养的,重点是典故一般都会蕴含着十分有深意的道理。
3、根据文学著作中的字词取名字文学作品中还有很多的文化瑰宝,然后根据其中寓意好的句子挑选出适合男孩的名字,一般这样的名字是比较有意境的,所代表的思想文化也是高雅的。