函数重载也是C++内一个重要板块,面试挖八股时会从 三大特性->多态->虚函数->函数重写(覆盖)这样的形式提问
1.什么是函数覆盖
派生类对基类同名同参函数进行重新修改/重写的过程
2.函数覆盖的条件是什么?
- 基类有virtual虚函数
- 同名同参函数
- 基类指针or引用指向派生类对象
如下代码,构成重写的条件,运行结果:B::i
class A
{
public:
virtual void fun(int i)
{
cout<<"A::i"<<endl;
}
...
};
class B:public A
{
public:
void fun(int i)
{
cout<<"B::i"<<endl;
}
...
};
void main()
{
A *p; //基类指针
B b; //派生类对象
p=&b;
fun(p); //调用派生类b函数成员
}
3.函数重载、重写(覆盖)、隐藏的区别?
重载 | 重写(覆盖) | 隐藏 | |
类个数 | 无要求 | 基类、子类(至少两个类) | 基类、子类(至少两个类) |
参数情况 | 同名不同参构成重载(与返回值无关) | 同名同参 | 1.同名不同参文章来源:https://www.toymoban.com/news/detail-424094.html 2.同名同参+基类无virtual函数文章来源地址https://www.toymoban.com/news/detail-424094.html |
基类中有无virtual | 无要求 | 基类必须有 | 同上 |
到了这里,关于C++八股 | 函数重写(覆盖)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!