现代C++特性
所属分类 c
浏览量 778
从C++98到现代C++
1998年,C++标准委员会发布 C++语言的第一个国际标准,现在使用最多的C++98
2003年,标准委员会针对98版本中存在的诸多问题进行了修订,发布C++03
2005年,C++标准委员会发布了一份技术报告,详细说明了引入C++新特性的计划
当时预计会在本世纪第一个十年的某个时间发布,这个新标准被非正式地命名为C++0x
但是这个标准最终在2011年才面世,也就是C++11
2014年,标准委员会公布 C++14标准
2017年,标准委员会计划即将公布的C++17标准
现代C++ 从C++11开始
现代C++的新特性皆围绕C++之父Bjarne指明的两条主线
一是直接硬件映射,二是零开销抽象
更快 更好用
智能指针
C++11中引入三种智能指针
unique_ptr shared_ptr weak_ptr
类型推导
C++11 引入auto 和 decltype这两个关键字
auto 让编译器分析表达式所属的类型 编译期推导类型
decltype 选择并返回操作数的数据类型
基于范围的for循环
线程库 可移植的并发程序
右值引用和转移语义
避免无谓的拷贝,节省运算存储资源,提高效率和程序性能
右值引用 R-value reference
非常数引用(reference)类型
转移语义可以将资源 ( 堆,系统对象等 ) 从一个对象转移到另一个对象
减少不必要的临时对象的创建、拷贝以及销毁,能够大幅度提高 C++ 应用程序的性能
转移语义是和拷贝语义相对的,可以类比文件的剪切与拷贝,
将文件从一个目录拷贝到另一个目录时,速度比剪切慢很多
通过转移语义,临时对象中的资源能够转移到其它的对象里
原子类型
线程间的数据共享更加方便 安全
atomic_bool atomic_int等
POSIX标准 pthread库中的互斥锁 mutex ,互斥访问 保证原子性
Linux GCC 4.8及以上即可使用C++11特性
gcc --version
gcc (GCC) 4.8.5 20150623 (Red Hat 4.8.5-36)
上一篇
下一篇
C++继承和派生
C++继承同名成员变量处理
C++动态内存分配实例
C++防止头文件被重复引入的3种方法
c++11 STL 例子
c++模板和java泛型