IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> C++知识库 -> C++11新特性总结 -> 正文阅读

[C++知识库]C++11新特性总结

一、概述

C++11新特性包括auto、decltype、constexpr、右值引用、move()函数、完美转发、移动构造、lambda匿名函数、for循环新格式、nullptr、shared_ptr、weak_ptr、unique_ptr、using定义别名、函数模板默认参数、tuple元组、非受限联合体、placement new、longlong int等

二、正文

以下是我在学习过程中记录下来的笔记总结,实际代码较少,大多是知识点,比如相关的特性、定义、限制、作用和说明等等,放上一半的内容,剩下一半在文章底部的资源处,真的是个人用心精简的总结,谢谢支持和理解~~

  • auto类型推导
    • 应用
      1. 定义迭代器
      2. 泛型编程
    • 限制
      1. auto声明的变量必须赋值初始化,因此auto也不能够在函数参数中进行使用,也不能作用于非静态的类成员变量,因为类成员在声明的时候并不能赋值
      2. auto关键字不能定义数组
      3. auto不能用作模板参数
    • 性质
      1. auto 仅仅是一个占位符,在编译器期间它会被真正的类型所替代
      2. 推导不可具有二义性
      3. 当类型不为引用时auto的推导结果不保留表达式的const属性,反之则保留
    • 简介:C++11之前,auto 表示变量是自动存储的,这也是编译器的默认规则,所以写不写都一样;C++11之后,auto 用于自动类型推到,关键字以后,编译器会在编译期间自动推导出变量的类型。

  • decltype(declare type)  基础用法:decltype(exp)? var;
    • 返回值类型后置
      1. 为了解决函数返回值类型依赖于参数而导致难以确定返回值类型的问题
      2. auto decltype结合使用
    • 与auto区别
      1. auto根据赋值推导,decltype根据表达式推导变量类型
      2. auto要求变量必须初始化,而decltype不用
    • 推导规则
      1. 如果是一个普通变量或类成员访问表达式,推导类型和exp一致
      2. 如果是函数调用,和返回值一致
      3. 如果是左值或者括号包围的表达式,推导类型为exp的引用
    • 实际应用
      1. 用于类成员的类型推导
  • 对函数模板默认模板参数的支持(之前只支持类模板默认模板参数)
  • tuple元组
    1. 特点:实例化的对象可以存储任意数量任意类型的数据
  • 列表初始化(统一初始化格式)
  • lambda匿名函数
    1. 格式:

      [外部变量方位方式说明符] (参数) mutable noexcept/throw() -> 返回值类型

      {

      ????????函数体;

      };

    2. 说明
      1. [外部变量方式方位说明符]:[]用于声明当前是lambda表达式,方括号内部注明当前函数体中可以使用哪些外部变量
      2. (参数):和普通函数一样用于传递参数,如果不接收参数可以省略
      3. mutable:以值传递引入的外部变量默认为常量,若要修改它们,则需要使用mutable关键字,可省略
      4. noexcept/throw():默认情况下lambda函数可以抛出任何类型的异常,如果noexcept则不会抛出任何异常,如果throw()可以指定抛出异常的类型,可以省略
      5. ->返回值类型:指定lambda匿名函数的返回值类型。如果函数体内只有一个return或者该函数返回void,则可以省略
      6. 函数体:既可以使用值传递的参数,还可以使用指定的外部变量和全局范围内的所有全局变量,外部变量会受到以值传递还是引用传递方式引入的影响,而全局变量不会,lambda表达式内可以使用并直接修改全局变量的值
    3. 应用示例
      1. 最简单的匿名函数:[]{};
      2. 排序数组sort(num.begin(), num.end(), [=](int x, int y) -> x > y);
      3. 给匿名函数起名字auto display = []{};
  • using定义别名
    1. 作用:给一种类型或者函数模板重新命名,在typedef之上多了模板重命名的功能
  • 非受限联合体(union)
    1. C++联合体中允许非POD类型
    2. POD类型
      1. 不包含虚函数和虚基类
      2. 非静态成员必须声明为public
      3. 没有用户自定义的析构、构造、拷贝函数
    3. placement new
      1. new关键字的一种进阶用法,既可以在堆上生成对象也可以在栈上生成对象
      2. 语法:new(address) ClassConstruct(...);adress表示已有的内存地址,可以是某个变量的引用,ClassConstruct表示调用类的构造函数

最后放出全部内容的资源链接,多谢~~?

?C++11新特性实用总结word版本-C++文档类资源-CSDN下载主要是C++11新特性的定义,特性,使用限制等,关于具体如何使用新特性的代码不多,大部分是知识内容,更多下载资源、学习资料请访问CSDN下载频道.https://download.csdn.net/download/weixin_44178960/85018835

  C++知识库 最新文章
【C++】友元、嵌套类、异常、RTTI、类型转换
通讯录的思路与实现(C语言)
C++PrimerPlus 第七章 函数-C++的编程模块(
Problem C: 算法9-9~9-12:平衡二叉树的基本
MSVC C++ UTF-8编程
C++进阶 多态原理
简单string类c++实现
我的年度总结
【C语言】以深厚地基筑伟岸高楼-基础篇(六
c语言常见错误合集
上一篇文章      下一篇文章      查看所有文章
加:2022-03-24 00:18:35  更:2022-03-24 00:18:58 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/24 1:51:30-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码