c++11


1.智能指针
解决了内存泄露和野指针

2.空指针:nullptr

以前(NULL)

3.auto关键字** 用于定义变量,编译器可以自动判断的类型

(前提:定义一个变量时对其进行初始化)
4.右值引用
//左值引用
以前:
int num = 10;
int &b = num;  //正确
int &c = 10;   //错误,在C++98/03标准中,无法为右值添加引用

实际开发中可能需要对右值进行修改(实现移动语义时就需要),显然左值引用的方式是行不通的。
为此,C++11 标准新引入了另一种引用方式,称为右值引用,用 “&&” 表示。
右值引用也是别名,但其只能对右值引用
int num = 10;
//int && a = num;  //右值引用不能初始化为左值
int && a = 10;

5.标准库扩充(往STL里新加进一些模板类,比较好用)

(1)无序容器(哈希表)
用法和功能同map一模一样,区别在于哈希表的效率更高

(2)array

固定大小的数组,静态数组,
array价值:
1.支持迭代器,更好兼容STL容器的玩法

2.对于越界的检查(最核心的地方)

(3)forward_list

单向链表
支持头插头删,不支持尾插尾删,
不支持在当前位置前面插入和当前位置的删除,支持在当前位置后面插入和删除当前位置后面的

价值:每个节点省了一个指针
(4)匿名函数lambda

6.扩大列表初始化的范围

c++98列表初始化如下:

对于一些自定义的类型,却无法使用这样的初始化。

就无法通过编译,导致每次定义vector时,都需要先把vector定义出来,然后使用循环对其赋初始值,非常不方便。
C++11扩大了用大括号括起的列表(初始化列表)的使用范围,使其可用于所有的内置类型和用户自定义的类型,使用初始化列表时,可添加等号(=),也可不添加。


7.override

指定一个函数覆盖另外一个函数
override作用是帮助检查是否继承了想要继承的虚函数。可以避免出现 “在继承的时候写错了函数(参数类型、参数个数不符),编译没问题但是程序运行时和预想的不一样” 的情况。
建议重写虚函数的时候加上 override

8.final

作用:指定某个虚函数不能在子类中被覆盖,或者某个类不能被子类继承。


9.支持线程

windows和linux下各有自己的接口,这使得代码的可移植性比较差。
C++11中最重要的特性就是对线程进行支持了,使得C++在并行编程时不需要依赖第三方库要使用标准库中的线程,必须包含< thread >头文件。










全部评论

相关推荐

屌丝逆袭咸鱼计划:心态摆好,man,晚点找早点找到最后都是为了提升自己好进正职,努力提升自己才是最关键的😤难道说现在找不到找的太晚了就炸了可以鸡鸡了吗😤早实习晚实习不都是为了以后多积累,大四学长有的秋招进的也不妨碍有的春招进,人生就这样
点赞 评论 收藏
分享
评论
8
41
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务