C++ 中,类的继承:父类当使用虚函数时候,子类对该函数进行重写的话,属于子类成员函数对虚函数的覆盖!
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C++ 中,类的继承:父类当使用虚函数时候,子类对该函数进行重写的话,属于子类成员函数对虚函数的覆盖!相关的知识,希望对你有一定的参考价值。
请问这里的覆盖是什么意思?是不是说子类对象中没有继承父类的虚函数?或者说是继承来了之后,被覆盖了,也就是彻底没了,这样理解可以吗
可以这么理解。换句话说,你调用子类的虚函数,程序会运行你重写的代码,而不是定义在父类里的代码。追问
但是我子类里面不是虚函数,只是普通的成员函数
追答没事,只要父类里是虚函数,子类里的同名函数都是虚函数,即使你没写virtual。
追问我一直以为覆盖就是子类对象中没有了父类的成员函数,假设父类是A,子类的对象是bb,那么我采用aa.A::fun(),是可以运行父类的成员函数的呀,这不就和刚才的那个理解相悖了嘛 怎么解释
追答因为父类的成员函数还是存在的啊。我不知道你说的对象中有函数是什么意思,函数的代码并不是储存在对象中,对象查找虚函数是通过虚函数表来找到相应函数的地址来实现调用的,而你所说的aa.A::fun()则是跳过了虚函数表直接找到A类fun()函数的地址来调用它。
参考技术A 有没有代码,你这样我也看不懂!追问子类的virtual可以省略!是有虚函数的!
以上是关于C++ 中,类的继承:父类当使用虚函数时候,子类对该函数进行重写的话,属于子类成员函数对虚函数的覆盖!的主要内容,如果未能解决你的问题,请参考以下文章
vc 父类实现一个虚函数,子类继承并也实现这个虚函数,子类调用这个虚函数,父类这个虚函数会不会执行?