C++ override、final、default、delete

override:

当重载虚函数时,显式的告诉编译器进行重载,编译器就会检查基函数是否存在这样的虚函数,如果没有就会编译错误:

class Base {
public:
    virtual void foo(int x) ;
};
class Subclass : Base {
    void foo(int x) override ;//合法,因为基类有与之匹配的虚函数
    void foo(float y) override;//错误因为基类中没有和这个匹配的虚函数
};

final:

是为防止类被继续继承以及终止虚函数继续重载

class A{
    virtual void foo( ) final;//接下来的类将不能重载这个虚函数
};
class B final  :public A {//接下来的类将不能继承 B 类,它已经被终止继承了
};

default :主要用于显式声明要有编译器生成的构造函数

(因为我们自己没有提供,编译器会默认为对象生成默认构造函数、复制构造、赋值运算符、析构函数,我们不能精确控制默认函数的生成行为。当然可以通过把它们声明为么有的也可以达到目的,但新特性提供了 delete来让我们更方便的控制默认函数的生成行为;还有就是我们提供了构造函数,编译器就不会再提供默认构造函数,如果想让这两个现时存在就得使用关键字 default )

delete : 显式声明拒绝编译器生成构造

class C {
public :
    C() = default; //显式声明使用编译器生成的构造函数
    C& operator=(const C&) = delete;//显式声明拒绝编译器生成构造

};

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

syhk

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值