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

本文详细介绍了C++中的final关键字,包括如何禁止类继承和虚函数重写,以及其在防止意外覆盖中的作用。同时,讲解了override关键字的使用,确保方法正确重写。另外,探讨了类成员声明时直接赋初值的便利性和避免重复初始化的优势。最后,提到了delete关键字如何阻止构造函数的外部调用,增强了类的封装性。
摘要由CSDN通过智能技术生成

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;  //隐藏构造函数,禁止构造函数被外部调用
};
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值