0
点赞
收藏
分享

微信扫一扫

C++八股 | 函数重写(覆盖)

木樨点点 2023-04-25 阅读 59
c++面试

1.什么是函数覆盖

        派生类对基类同名同参函数进行重新修改/重写的过程

2.函数覆盖的条件是什么?

  1. 基类有virtual虚函数
  2. 同名同参函数
  3. 基类指针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.同名不同参

2.同名同参+基类无virtual函数

基类中有无virtual无要求基类必须有同上
举报

相关推荐

0 条评论