中易网

虚函数与重载函数的区别与联系

答案:3  悬赏:80  
解决时间 2021-04-22 03:12
虚函数与重载函数的区别与联系
最佳答案
虚函数在基类中声明 用virtual修饰 但是并不实现 ,只是在子类继承基类时才实现

重载函数是基类中已经有某个函数,当子类继承时重新实现(基类已实现)覆盖基类的方法。

虚函数和重载在子类和基类中的方法同名,参数类型相同,返回值类型相同。个人感觉 虚函数是一种特殊的重载,即必须被重载的函数(一般函数可以不被重载)
全部回答
abstract 抽象方法 virtual 虚方法 重载函数就是override的方法 比如 父类A.m() 子类B.m() 1 abstract的方法,父类可以不实现,让子类去重写(重写=overwrite,不过一般不会提到).父类如果存在abstract方法,那么必然是抽象类,必然不能直接实例化(比如 A a=new A()是不行的),必须由子类去继承并且重写所有抽象方法后再去使用.比如:A a=new B(). 2 虚方法,父类写了之后,子类可以去override.继承的时候调用B.m() class A{ virtual m() {xxxxx} } class B:A{ override m() {base.m();xxxxxxx} } 3 一般的重载.这个跟继承没有多大关系.普通的类自身不用写什么关键字就能实现.有着同样的名字,但是调用的时候根据参数的不同,编译器选择合适的来使用 class A{ m(){} m(int ia){} m(string sa){} } 4 重载跟抽象还有虚方法可以出现在一个类里面 abstract class A //这个父类声明了一个抽象方法,一个虚方法,自己实现了一个重载 { abstract void m() virtual void m(int ia) void m(string sa) { m(Convert.ToInt(sa)); } class B:A//仅仅是实现了父类没有实现的m() { void m(){//xxxxxx} } } class C:A //实现了m()并且重写了被父类定义为虚方法的 m(int ia) { void m()//这个必须实现 override void m(int ia){//xxxxx} } 5 new关键字(不过一般不用去在意) class D:B //如果是c#其实还有一个new关键字 { public void new m(string sa){}//这里故意隐藏父类的m(string)方法 } 6 多做做实验练习下,这些东西基本上都是去公司应聘的oo必考题.
虚函数允许继承类的对象指针访问基类非私有成员,重载就是相同的函数名,不同的参数类型,调用重载函数的时候根据需要指定实参,具有灵活性的特点
我要举报
如以上问答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
载君舟春晖店地址在什么地方,想过去办事
丰田rav4老款突然感觉没有劲是怎么回事?
前妻离婚后还和我要钱用,你们说她什么心态呀
在居室栽,金边吊兰,金心吊兰还是宽叶吊兰好
从上海南车站到川沙镇
刚才我看见有人买了几瓶矿泉水给汽车里加,他
请问HY50U561622AT-R是DDR400还是DDR333?
为什么你只知道她伤害你 ` 却不知道自己伤害
我想做微商,食品类的,去哪里找货源比较好,
介绍些名牌啊``
泰平铝合金门窗型材经营部我想知道这个在什么
北京吉利大学怎么样?
舌苔白厚腻心慌气短心烦主要失眠一睌到亮都睡
进入DNF没有出现DNF程序,为什么?
请问一下做土方工程风险性大不大啊,我刚手上
推荐资讯
苏州三阳春贸易有限公司我想知道这个在什么地
今年中国男篮到底怎么了? 狂输伊朗18分
App数据分析,有没有好的工具推荐?
求腹黑攻妖孽美受古代耽美
京东快递云南宁洱有加盟商吗
好乐居地址在什么地方,我要处理点事
我们物理老师和语文老师要结婚了送给他什么祝
我是一个蛋糕店老板,我们家的展柜用了一段时
动态图片,保存的电脑里怎么就不动了呢?这是
html5 table怎么美化
我是一九九一年五月十二日出生的,属羊的,我
穿越火线更新后有什么错误?
手机登qq时,显示手机磁盘不足,清理后重新登
刺客的套装怎么选啊?