虚函数
Posted xxxsea
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了虚函数相关的知识,希望对你有一定的参考价值。
刚开始学习C++,每天懵懵懂懂看一点,有点乱
现在开始一点点整理
C++虚函数的作用:给派生类重写用的,普通的函数只能重载,通过修改函数形参的个数或者类型,派生类B继承基类A,A类中有个fun函数,B类根据自身需求更改了fun函数
class A public: void fun()cout << "A" << endl; class B : public A public: void fun()cout <<"B" << endl;
在main中如下定义:
A a;
B b;
a.fun(); //A
b.fun(); //B
上述代码结果正常
但是C++有许多特性,其中就有基类指针可以指向子类对象 (为甚么,有甚好处,不知道,待更新)
当main代码如下:
A *a = new A; A *b = new B; a->fun(); b->fun();
运行时会报错,b分不清该调用A类的fun还是B类的fun,二义性错误
这个时候,虚函数的作用就出来了,
class A public: virtual void fun()cout << "A" << endl; class B : public A public: void fun()cout <<"B" << endl;
此时,上述代码就不会报错了,基类用virtual修饰了fun,让派生类可重写fun函数
2019-09-30
以上是关于虚函数的主要内容,如果未能解决你的问题,请参考以下文章