c++11 override说明符

先复习重写与重载的概念:

重写:接近覆盖,是指派生类覆盖基类的虚函数,而覆盖满足的条件有相同的函数签名和返回类型,也就是说函数名,函数参数以及返回类型相同;

重载:是指在同一个类中有两个或两个以上的函数,函数名相同,而函数签名不同,就是有着不同的形参,比如不同的构造函数;当然普通的函数也可以重载,如函数实现整型和浮点型的相加,函数名相同,而返回值与形参都不同。

int add(int a,int b);
double add(double a,double b);

override说明符与重写有关;

#include<iostream>
using namespace std;
class Base {
public:
    virtual void some_func() {}
    virtual void foo(int x) {}
    virtual void bar() const {}
    void baz() {}
};

class Derived : public Base {
public:
    virtual void sone_func() {}
    virtual void foo(int &x) {}
    virtual void bar() {}
    virtual void baz() {}
};
int main()
{
    Derived D;
    return 0;
}

代码的本意是Derived继承Base以及重写Base的虚函数,而在Derived中,四个函数都没触发重写操作;第一个虚函数sone_func的函数名与Base中的some_func的函数名不同,所以不是重写;

第二个Derived虚函数foo(int &x)的形参列表与Base虚函数foo(int x)不同,所以也不是重写;第三个缺少常量属性;而第四个Base的baz()不是虚函数,也不是重写。不过这段代码可以通过编译,但是没有达到想要重写的目的。

override说明符可以告诉编译器,哪些函数需要重写,当编译下面代码时,编译器会报错,方便检查错误。

#include<iostream>
using namespace std;
class Base {
public:
    virtual void some_func() {}
    virtual void foo(int x) {}
    virtual void bar() const {}
    void baz() {}
};

class Derived : public Base {
public:
    virtual void sone_func() override {}
    virtual void foo(int &x) override {}
    virtual void bar() override {}
    virtual void baz() override {}
};
int main()
{
    Derived D;
    return 0;
}

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值