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

Virtual和override的区别

发布网友 发布时间:2022-07-31 10:10

我来回答

5个回答

热心网友 时间:2024-12-02 15:54

override是对父类的覆盖或者重载,也就是说父类肯定有定义这个函数,或者有同名的重载函数。

virtual是在父类肯定有进行申明,但是函数是没有本体的。相当于一个接口允许子类进行同名化也是方便子类函数的继承更方便!~两个不同定义的子类可以通过同一个过程调用不同的函数,一般都是通过Virtual来定义的!~

例如 var a :array [0..1] of stream;

a[0]:=TMemoryStream.Create;
a[1]:=TStringStream.Create;
for i:=0 to 1 do
a[i].clear;
最后这个clear就是通过Stream的Vitrual来调用的,可以用同一个函数名,但是它们的Clear的实际方法却是不同的,各自是 StringStream MemoryStream分别定义的。

热心网友 时间:2024-12-02 15:54

Virtusal 是虚方法啊,,,,Override这个是覆盖方法啊, 在虚方法中不能包括Overrde abstract static 等 修饰符

而在哪个覆盖的方法啊就可以,包括 new static virtual 还可以有 abstrasct

热心网友 时间:2024-12-02 15:55

1、override表示以继承的父类方法
2、virtual(虚拟方法)和dynamic(动态方法)表示:后代类可以override祖先的同名方法,在override过程的实现里,还可以用inherited调用祖先的同名方法,virtual(虚拟方法)和dynamic(动态方法)两者的差异在于方法指针的保存,virtual方法使用VMT(Virtual Method Table),也就是说,每一个该类的后代类都拥有整个的VMT,其优点在于速度快,因为类的实例可以直接从VMT中找到该方法的入口,但它也耗用较多的内存;相对的dynamic方法则不使用VMT,如果类的后代没有override该方法,那么需要从它的父类去查找方法的入口,它的优点是少用内存,因为子类只保留它override的方法入口,缺点是速度较慢,尤其在多级继承的时候,可能需要前溯好多层才找到方法的。
3、一般的理解是,如果该方法其后代类基本都需要override的,使用virtual,如果该方法不经常在后代类中被override的,使用dynamic。

热心网友 时间:2024-12-02 15:55

如果一个方法想用override必须将其定义为抽象(abs..)的或虚(virtual)的

就是重新写一下,或许原来只有一个方法定义,这里是具体的实现

热心网友 时间:2024-12-02 15:56

重载函数:
(1)参数不同的函数一定是不同的
(2)返回值不同的函数不一定是不同的例如:
int Fun() ;
void Fun() ;
int x = Fun() ;//这个时候就不知道应该调用哪一个函数
区分是不是重载函数的标准:
(1)只能靠函数的参数来区分重载函数
(2)不能靠函数的返回值来区分重载函数
编译之后的名字:_fun_int_int ;(C++中就是这样来区分重载函数的)
注意:并不是函数的名字相同就构成重载,当函数的作用域不同的时候两个重名的函数不能称作重载函数
例如:void print(int x, int y) ;
class A
{
void print(int x) ;//这样不叫函数的重载,因为函数的作用域不同
};
重载和覆盖的区别:(四个方面)
(1)从作用范围来说
(2)函数名称来说
(3)函数参数来说
(4)有没有Virval关键字
《1》重载:
(1)作用范围相同
(2)函数名称相同
(3)函数参数不相同
(4)Virtual关键字有没有都可以
《2》覆盖:
(1)作用范围不相同(分别位于子类和父类)
(2)函数名称相同
(3)函数参数相同
(4)Virtual关键字必须有
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
谁能给个单机版的风云之雄霸天下啊?? 求风云雄霸天下PC单机游戏WIN7版 雄霸天下任务指南 开心网001老房子卖了以后家具还有吗? 为什么001开心网买房子组件删除仓库里的东西都没了 请教一下,开心001的开心庄园里面的建材有好多富余的的 除了5元一个卖... 开心网001小号怎么给大号送房子? 开心网001多少级能送别人房子?多少级能接受别人给的房子? 开心网001果实或家具能送人吗 开心网(kaixin001)怎么买外地房子? OpenGL中的 c++问题 二建关于预付款扣回的习题 建设工程法规及相关知识复习题集(2014年版) 肾病二期是肾病综合征吗 慢性肾脏病、慢性肾功能不全-肾功能化催期(ckD2期),心率正常,偶发窦性... lga肾病ckd二期什么意思 cdk二期什么意思 青菜做的食物有哪些 台风的名字是怎么样命名的,比如今年的“梅花'',为何称之为此 吉林市林源纸管厂怎么样? 纸管厂一月30000元什么工作? 昆山哪家纸管厂比较好? 纸管厂对人身体有害吗? 聊城海源纸管厂搜聊城纸管厂怎么收不到呢 vivo怎么查看自己的锁屏密码? 通过中介公司买了二手房,付完首付,卖家不想卖了,该怎么办? 烧什么菜用什么油合适呢?为什么呢? 核辐射对人体的危害 核辐射对人体有什么危害 无手机号怎么注册 无需手机号怎么注册? C#中的override作用是什么 c#里面的override和new究竟有什么区别啊 C# New和Override有什么不同? c#中override的问题 山东省济宁市梁山县梁山镇郑垓村邮编是什么? 从北京出发,去山东济宁市梁山郑垓村 怎么走 济宁市梁山县方庙村的由来 簗赸在山东的什么方位 水浒传那个好汉是历城的 交通事故法院会调查一家人的财产吗 交通事故被起诉人不给予赔偿金银行卡会被封死吗?家人的银行卡会被... 交通事故赔偿时法院在强制执行时会冻结连带责任人妻子的银行帐号吗... ...法院有没有权利查妻子的银行卡?可以冻结妻子的银行吗? 交通事故中的民事纠纷,无力赔偿,会不会查家人的财产 请问有人需要棉袜吗?现有一批库存棉袜6毛一双 弟弟交通事故没钱赔可以查到姐姐的账户吗 肥城有几个袜厂肥城有做库存袜子的吗? 我由于交通事故的纠纷银行卡被冻结了这种情况下会执行我父母名下的... 交通肇事者的妻子银行卡会被查封吗 交通事故法院二审已判,但是对方不给钱,帐户没钱可以查其妻子的帐户吗...