欢迎您访问 最编程 本站为您分享编程语言代码,编程技术文章!
您现在的位置是: 首页

C++11 覆盖、默认和删除关键字

最编程 2024-04-14 10:25:09
...

最近在参与组里的项目时接触了很多以前自己没太了解的C++语法(尤其是C++11以后出现的),今天给大家讲一下C++11新出的override和default关键字。
override关键字主要在声明类的成员函数时使用,它的作用就是告知程序员和编译器这个函数是重写了父类的虚函数,一方面代码的阅读者看到这个关键字标识就知道这是一个重写的函数;另一方面也给编译器进行检测:如果这个函数实际上没有重写父类的虚函数则会报错:

class A
{
public:
  virtual void func1();
  void func2();
};

class B:public A
{
public:
  //A的func1是虚函数,可以编译通过
  void func1() override;
  //A的func2不是虚函数,编译器会报错
  void func2() override;
};

至于另一个关键字default,它是在强行指定某个构造函数为默认的构造函数。众所周知,当一个类声明了一个带参数构造函数后,编译器便不会再帮助该类生成默认的构造函数(包括默认构造函数和默认的复制构造函数),此时可以通过=default显式将某个构造函数定义为默认构造函数(当然这个函数的参数要符合规范,也不需要定义的)。对每个特殊成员函数统一使用=default语法也使得使代码更容易阅读。
下面的代码通过default定义了A的默认构造函数和默认拷贝构造函数,甚至包括默认析构函数:

class A
{
public:
    A() = default;
    A(A&) = default;
    ~A() = default;  //甚至析构函数也可以通过default修饰
};

原文地址:https://www.cnblogs.com/wickedpriest/p/14638665.html

推荐阅读