文章目录
1、什么是 C+11
- 1、什么是 C+11
- 2、类型推导
- 2.1 auto的使用
- 2.2 auto的易错点
- 2.3 decltype
- 2.4 追踪返回类型
- 3、易用性的改进
- 3.1 初始化
- 3.1.1 类中内成员变量初始化
- 3.1.2 列表初始化
- 3.1.3 防止类型收缩
- 3.2 基于范围的for循环
- 3.3 静态断言
- 3.4 noexcept 修饰符(vs2013 不支持)
- 3.5 nullptr
- 3.6 强类型枚举
- 3.6 常量表达式(vs2013 不支持)
- 3.6.1
- 3.6.2 constexpr 函数的限制
- 3.6.3 类中成员函数是常量表达式
- 3.7 用户定义字面量(vs2013 不支持)
- 3.8 原生字符串字面值 (原始字符串字面值 )
- 4、类的改进
- 4.1 继承构造(vs2013 不支持)
- 4.2 委托构造
- 4.3 继承控制: final 和 override
- 4.3.1 final 阻止类的进一步派生和虚函数的进一步重写
- 4.3.2 override 确保在派生类中声明的函数跟基类的虚函数有相同的签名
- 4.4 类默认函数的控制: "=default" 和 "=delete"函数
- 4.4.1 "=default"函数
- 4.4.2 "=delete"函数
- 5、模板的改进
- 5.1 右尖括号 > 的改进
- 5.2 模板的别名
- 5.3 函数模板的默认模板参数
- 6、可变参数的模板
- 6.1 可变参数模板函数
- 6.1.1 可变参数模板函数的定义
- 6.1.2参数包的展开
- 6.1.2.1 递归方式展开
- 6.1.2.2 非递归方式展开
- 6.2 可变参数模板类
- 6.2.1继承方式展开参数包
- 6.2.2 模板递归和特化方式展开参数包
- 7 、 右值引用
- 7.1 左值引用、 右值引用
- 7.1.1 左值、 右值
- 7.1.2 右值引用概念
- 7.1.3 左值引用、 右值引用
- 7.1.4 引用与右值引用比较
- 7.1.5 值的形式返回对象的缺陷
- 7.1.6 返回值优化技术
- 7.2移动语义
- 7.2.1 为什么需要移动语义
- 7.2.2 移动语义定义
- 7.2.3 移动构造函数
- 7.2.4 移动赋值运算符重载函数
- 7.3 标准库函数move---右值引用左值
- 7.4 完美转发 std::forward
- 7.5 右值引用作用
- 7.6 explicit关键字
- 8、 智能指针
- 8.1 RAII
- 8.2 C++98中的auto_ptr
- 8.3 unique_ptr
- 8.4 shared_ptr
- 8.5 weak_prt
- 9、 闭包的实现
- 9.1什么是闭包
- 9.2 闭包的实现
- 9.2.1 仿函数:重载 operator()
- 9.2.2 std::bind 绑定器
- 9.2.2.1 std::function
- 9.2.2.2 std::bind
- 9.2.2.3 std::bind 和 std::function的配合使用
- 9.2.3 lambda表达式
- 9.2.3.1 lambad 基础使用
- 9.2.3.2 lambad与仿函数
- 9.2.3.3 lambda类型
- 9.2.3.4 lambad优势
-
C++11 标准为 C++编程语言的第三个官方标准, 正式名叫 ISO/IEC 14882:2011 - Information technology -Programming languages – C++。 在正式标准发布前, 原名 C++0x。 它将取代 C++标准第二版 ISO/IEC 14882:2003 - Programming languages – C++成为 C++语言新标准。
-
C++11 是对目前 C++语言的扩展和修正, C++11 不仅包含核心语言的新机能, 而且扩展了 C++的标准程序库(STL) , 并入了大部分的 C++ Technical Report 1(TR1) 程序库(数学 的特殊函数除外)。
-
C++11 包括大量的新特性: 包括 lambda 表达式, 类型推导关键字 auto、 decltype, 和模板 的大量改进。
1、Qt Creator 新建一个纯C++的项目,在项目文件配置:CONFIG += c++11
2、终端,g++ xxx.cpp -std=c++11
2、类型推导
2.1 auto的使用
- auto的自动类型推导,用于初始化表达式中推断出变量的数据类型。从这个意义上讲,auto并非一种"类型"声明,而是一个类型声明时的"占位符",编译器在编译时期会将auto替换为变量实际的类型。
- 通过auto的自动类型推导,可以大大简化我们的编程工作。
在C中,auto修饰局部变量,局部变量也叫auto变量,自动变量
{
int a;
auto int a;
}
C++11, auto根据用户初始化内容自动推导类型
auto使用代码
#include
#include
double foo(){
//...
}
//自定义类型:结构体、枚举、联合体
//struct是声明结构体类型时所必须使用的关键字
//Test是结构体名字
struct Test{
int a;
};
void func(std::vector& tmp){
//自动推导i的类型
for(auto i=tmp.begin();i
关注
打赏
最近更新
- 深拷贝和浅拷贝的区别(重点)
- 【Vue】走进Vue框架世界
- 【云服务器】项目部署—搭建网站—vue电商后台管理系统
- 【React介绍】 一文带你深入React
- 【React】React组件实例的三大属性之state,props,refs(你学废了吗)
- 【脚手架VueCLI】从零开始,创建一个VUE项目
- 【React】深入理解React组件生命周期----图文详解(含代码)
- 【React】DOM的Diffing算法是什么?以及DOM中key的作用----经典面试题
- 【React】1_使用React脚手架创建项目步骤--------详解(含项目结构说明)
- 【React】2_如何使用react脚手架写一个简单的页面?