C++ 中,类的继承:父类当使用虚函数时候,子类对该函数进行重写的话,属于子类成员函数对虚函数的覆盖!

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C++ 中,类的继承:父类当使用虚函数时候,子类对该函数进行重写的话,属于子类成员函数对虚函数的覆盖!相关的知识,希望对你有一定的参考价值。

请问这里的覆盖是什么意思?是不是说子类对象中没有继承父类的虚函数?或者说是继承来了之后,被覆盖了,也就是彻底没了,这样理解可以吗

可以这么理解。
换句话说,你调用子类的虚函数,程序会运行你重写的代码,而不是定义在父类里的代码。追问

但是我子类里面不是虚函数,只是普通的成员函数

追答

没事,只要父类里是虚函数,子类里的同名函数都是虚函数,即使你没写virtual。

追问

我一直以为覆盖就是子类对象中没有了父类的成员函数,假设父类是A,子类的对象是bb,那么我采用aa.A::fun(),是可以运行父类的成员函数的呀,这不就和刚才的那个理解相悖了嘛 怎么解释

追答

因为父类的成员函数还是存在的啊。我不知道你说的对象中有函数是什么意思,函数的代码并不是储存在对象中,对象查找虚函数是通过虚函数表来找到相应函数的地址来实现调用的,而你所说的aa.A::fun()则是跳过了虚函数表直接找到A类fun()函数的地址来调用它。

参考技术A 有没有代码,你这样我也看不懂!追问

追答

子类的virtual可以省略!是有虚函数的!

以上是关于C++ 中,类的继承:父类当使用虚函数时候,子类对该函数进行重写的话,属于子类成员函数对虚函数的覆盖!的主要内容,如果未能解决你的问题,请参考以下文章

vc 父类实现一个虚函数,子类继承并也实现这个虚函数,子类调用这个虚函数,父类这个虚函数会不会执行?

C++ 怎样禁止子类重写父类的某个虚函数?

C++子类如何调父类的虚函数

c++中 static 变量和函数能否被子类继承

继承与多态C++:继承中的赋值兼容规则,子类的成员函数,虚函数(重写),多态

C++编程中 子类(派生类)能不能重写父类(基类)的函数(方法),除了虚函数?