首页 > 电脑 > 子类重写父类的普通函数和子类重写父类的虚函数的区别c++

子类重写父类的普通函数和子类重写父类的虚函数的区别c++

电脑 2026-10-25

请比较函数重载和虚函数,两者在概念和使用方式方面有什么区别?

当普通的函数重载时,其函数的参数或参数类型必须有所不同,函数的返回类型也可以是不同的。但是,,当重载一个虚函数时,要求函数名,返回类型,参数个数,参数的类型和顺序与基类中的虚函数原型完全相同。如果仅仅是返回类型不同,其余均相同,系统会给出错误信息;若仅仅是函数名相同,而参数的个数,类型或顺序不同,系统将它作为普通的函数重载,这时虚函数的特性将丢失。

C++:派生类中重定义基类的成员函数与虚函数区别在哪里?

这涉及到多态的问题。 比如说你有一个基类BASE,有一个派生类Derived继承自BASE 两个类都有一个叫做fun的方法 然后你创建一个子类对象,但是用父类的指针(或者引用)指向他 例如: BASE *b = new Derived(); 如果你不加virtual 那么b.fun()调用的是父类的fun。因为b是父类指针,只能调用父类的方法,调用不到子类的方法。 如果你加上virtual 那么b.fun()调用的是子类的fun。因为加了virtual之后,会产生一个虚表,将fun函数放入虚表之内。当创建一个子类对象时,会自动“覆盖”父类的fun函数(你暂时这么理解就行)。b.fun()调用的

C++中函数覆盖和使用虚函数有什么区别

我觉得最明显的区别,给你举个例子。 有两个类 :父类 Class 子类 Student 同有一个函数名为 num的函数 父类对象 class 子类对象 student 那么函数覆盖就是 student.num(); //直接用子类对象调用了子类函数 而虚函数则是 Class *pt; pt=&student; pt->num(); //用父类指针对象调用子类函数 能大致明白吗?函数覆盖是在子类对象调用函数时(父类和子类的函数头一样)选择了子类自己的函数,而不是调用继承于父类的函数 而虚函数则是定义了父类的指针对象,而用它可以调用到子类对象的函数

C#下 子类继承父类的虚方法后 使用override重写父类方法 和 不使用override重写有什么区别?

不使用override重写的话 子类new出来的对象 调用该虚方法 是调用的在父类中的虚方法的定义的方法体执行的 打个比如吧 就像 你继承父亲的房子 但是房子如果没过户(重写) 户名不是你 所以还是使用父亲的 但是过户了就是你的了~! 比喻不是很直观 呵呵 子类对象重写后调用的时候就是子类中重写后的方法了 不重写 子类对象调用该虚方法 还是父类中实现的那个方法

C++中父类和子类的成员函数同名同参数同返回只是父类里面是虚函数,子类没有虚函数限定 有问题吗

没有问题,这就是虚函数的作用,子类中可以override(重写)父类中的虚函数,给出子类自己的实现方法,子类中其实省略了父类函数声明前的virtual,子类中加上virtual也是没有问题的,可有可无。

标签:信息技术 编程语言 CC++ 虚函数 c++

大明白知识网 Copyright © 2020-2022 www.wangpan131.com. Some Rights Reserved. 京ICP备11019930号-18