C++11用到的新特性总结

1. final关键字

1.1 禁止类被继承

class A final {};       //禁止被继承
class B : public A {};  //编译错误

被声明成fianl的A不可以被B继承。

1.2 禁止虚函数被重写

class A {
  virtual void func() final {} //禁止被重写
};

class B : public A {
  virtual void func() {} //编译错误
};

被声明成final的虚函数(final不可以用于修饰非虚函数),禁止被子类重写。

2. override关键字

override的作用是显示声明重写,当子类的某个成员方法是对父类的某个成员方法的重写,可以加上此关键字,防止两者的名字写的不一样等人为过失性的bug。

3. 类成员声明的同时赋初值

这是一个已经习以为常的功能,在头文件中给成员变量赋一个初值,而且不影响初始化列表中对该成员变量的初始化。也就是说如果同时在头文件中赋初值,也在初始化列表中进行初始化了,那么前者会被忽略什么也不做。

这个特性还有一个好处:如果类含有多个重载的构造函数,每个构造函数都有自己的初始化列表,那么给类成员在初始化列表中进行初始化就造成大量的重复工作,在头文件中声明的地方进行初始化可以免除这种重复的工作。

4. delete关键字

想禁止某个类的构造函数被外部调用,除了将构造函数声明为private的,还可以这样做:

class A {
  A() = delete;  //隐藏构造函数,禁止构造函数被外部调用
};

你可能感兴趣的:(C/C++)