C++中为什么一定要出现虚函数,用函数覆盖不可以解决问题么,换句话说,虚函数和函数覆盖有什么区别

2022-09-05 07:55

3个回答
简单点跟你说吧,虚函数就是用来被继承类重载的,重写这个函数一样.功能全变了.父类的这个虚方法功能不变.当然可以调用父类的.这是包含面相对象的思想的东西.编多了自能体会虚函数的好处.现在你把它但成一般函数对待就行了.
虚函数可以实现动态绑定,比如父类有个虚函数函数f和子类中重定义了f
Father *p=new Son;
则p->f调用的就是子类的
Father *p=new Father;
则p->f调用的是父类的函数f。
对于p->f在编译阶段是不知道要调用那个函数的,只有在执行阶段才能确定。
而函数覆盖在编译阶段就确定了,父类就调用父类的,子类就调用子类的(父类的被覆盖了)。
虚函数的用途只体现在用指针构造函数的情况下
比如 A B 两个类,B是A的子类,如果 A 和 B 都有一个函数叫做 C
那么 A *a = new B;
如果 C 不是虚函数的话
调用 a->C() 的话,调用的就是 A 的 C
如果 C 是虚函数的话
调用 a->C() 的话,调用的就是 B 的 C
虚函数就是为了起这个作用的
而正常实例化的话,虚函数几乎不起作用
我应该没说错。
相关问答
在C++中什么时候用虚函数
1个回答2022-11-13 02:42
你还不知道怎么写函数体的时候!
C++虚函数怎么理解?
1个回答2022-09-26 10:33
一个函数被定义成虚函数,那么他的子类就能重写这个方法了,当用子类对象调用方法的时候,就是调用的子类中的方法。 还有他是用来实现多态的。
函盖乾坤是什么意思
1个回答2024-02-27 06:40
函盖乾坤释义: 佛教语。原指泯合无间。后指言语诗文契理或一心专志而绝无杂念。
虚函数在什么时候被替换为
1个回答2023-06-09 22:21
啥意思? 没描述清楚。 虚函数实现多态, 多态 运行时绑定
c++的C++中虚函数的作用是什么?它应该怎么用呢?
1个回答2022-10-31 23:05
指针的类型是可以强行转来转去的。普通情况你转什么类型就调对应类型的同名函数。但是虚函数实现多态后,尽管可能你把指针转成父类的类型,但是因为创建的时候是子类的类型,它还是会调用子类的这个虚函数。 这样可...
全文
基类中私有的虚函数可以被替换吗?
1个回答2022-12-08 08:44
如果基类定义的纯虚函数,那么子类继承下来的也是纯虚函数,如果不给予实现,那么便不能创建子类的实例,如果基类定义的是非纯虚函数,那么子类继承下来的也是非纯虚函数。都可以不予实现,因为自动继承下来了,看你...
全文
函数和一次函数的来源故事?
1个回答2024-03-07 14:23
“函数”一词最初是由德国的数学家莱布尼茨在17世纪首先采用的,当时莱布尼茨用“函数”这一词来表示变量x的幂,即x2,x3,….接下来莱布尼茨又将“函数”这一词用来表示曲线上的横坐标、纵坐标、切线...
全文
求教,c++中什么时候使用虚函数?
2个回答2022-09-23 00:28
虚函数的应用很多,其中最常用的是虚函数的覆盖技术
钩子函数的原理c/c++
1个回答2022-10-31 12:21
观望。。。。
热门问答