zoukankan      html  css  js  c++  java
  • 简单总结一下C++11~17的新特性,只是总结,没整理

    真的很简单,有用的,没用的,直接看一下就好了,其实也没啥新玩意。

    C++11 新特性
    nullptr ,没啥用,仅有当需要明确区分 0 和 NULL 的时候,它的作用才会体现,但是 NULL 是 ((void*)0) 类型级别不同,不用区分啊
    auto 类型推导,非常常用,很牛,auto i = XXXXX; 如果后面是个模板啥的,能少打好多个字,配合编译器又不影响类型的查看
    decltype 关键字,超级牛,超级常用,C++ 终于也支持了,好处自己去想,随随便便就能想到好多
    区间迭代,比较有用,如果是对stl结构迭代的话,效率是最高的,比其他方法快了之少几条汇编指令
    初始化列表,没太大用处,因为其实这种初始化,最多也就是节省了一次赋值操作的时间,但是既然是初始化,就不是很在意耗时
    默认模板参数,比较有用,且一直在用
    拖尾返回类型定义,没啥用,真的没啥用,非要这么写,我写个匿名函数不好么
    委托构造,其实没啥用,就相当于在一个函数里调用另一个函数,但是尴尬的是这里是构造函数啊,写成 Init 函数,调用 Init 不好么
    继承构造,没啥用,早期的透传调用构造不好么,没啥不好的啊,我看代码的时候,看到构造的时候,我还知道是啥呢
    匿名函数,比较有用,主要是方便了很多时候的函数定义方法,至于捕获列表,其实用处不是特别大,最多也就相当于多了一种参数传递方法
    std::array 容器,没啥用,我用vector 不行么,有啥好处啊
    无序容器,其实就是加了若干个哈希表结构,随意吧,用不用看心情
    std::forward_list,单链表,呃,存储密集型的单链表,其实也没啥用
    元组,基本上没用
    内置正则支持,算是有用?但是正则这个效率,我是从来不会在C/C++ 中用正则
    右值引用,其实没太大用处,基本上使用场景也不多,针对普通引用没有太大的提升空间,逻辑上反而繁琐
    pthread 线程支持,其实没啥用,原有的线程函数等功能都很成熟了
    std::move 转移左值成右值,呃,有的时候有用吧,使用场景不多
    auto_ptr 别用,干啥不好,非要用这逼玩意,吃饱了撑的么,自己干啥的不知道么,非要用它来释放内存?


    C++14 新特性

    返回值类型推导,就是支持 auto 返回值了,
    匿名函数参数类型推导,就是参数可以auto 类型了,函数都写成匿名函数的话,模板就失业了,
    std::move 可捕获匿名函数初始化部分,没啥用,
    弃用关键字 [[deprecated]] 还行,可以做长篇注释用,
    二进制标识符 0b 开头,很有用,很类似十六进制的 0x 开头,由于b 是十六进制数字,所以不会出现歧义,


    C++17 新特性

    constexpr ,关键字,可用在if语句中,开优化,让部分代码在编译阶段就执行完,
    变量类型推断,auto 支持往std::list 这种类型上推断了,太可怕了,万一我想要的是个vector咋整,
    typename 嵌套,没啥用,就是写得方便点,
    inline 内联变量,没啥用,

    变长参数模板的变长参数折叠,这个别用就是了,绝对是个坑,
    函数结构返回值绑定,函数结构返回类型为对象,外部接收返回值类型是auto,可以绑定返回值变量名,没啥用
    条件分支语句初始化,就是if 和 switch 语句内部支持赋值语句了,没啥用,
    聚合初始化,这玩意有点用,聚合型对象初始化的时候,支持用空大括号给任意一个成员初始化,
    嵌套命名空间,支持简化多层写法,挺有用的,
    匿名函数可以捕获 *this 了,也就是说,匿名函数可以类似地变成类成员函数来使用了,
    枚举类型变量定义,然后枚举类型可以创建变量并且赋值了,没啥用,
    十六进制浮点数,这个绝对就是坑,这玩意怎么算,
    带对齐值的动态内存分配,没太大用处,小内存不用对齐,大内存自动对齐,
    细化表达式的计算顺序,没太大用处,标准很乱,

    还有一堆没用的。。。

    构造函数继承,没啥用,我自己写个构造函数不行么,非要继承它的,
    auto 模板参数,这个没啥用,class 就可以了,

    __has_include 判断是否包含了某个文件,比较重要,
    [[fallthrough]] switch 中,可以继续执行下一个分段,比较重要,
    [[nodiscard]] 可以用于类声明、函数声明,编译警告,如果返回值没收,就警告,
    [[maybe_unused]] 可用于类、typedef、变量、非静态数据成员、函数、枚举或枚举值中,即便没使用也不警告

  • 相关阅读:
    WriteFile函数
    良好的动态内存申请与释放
    只需一条命令,快速在Windows 10上关闭Linux
    盘点程序员过年最怕被问的问题:薪资问题首当其冲,对象问题紧追其后
    程序员为什么是吃青春饭,而不是像医生律师一样越老越值钱?
    Linux网络配置的三种方法,手把手教你,一看就会!
    应届程序员VS往届程序员:当面对HR和领导时,此时的内心活动是这样的...
    MySql数据在磁盘上到底是怎么存储的?被存储的数据怎么查找?
    如何写出高质量的代码?优秀的程序员都是这样做的
    哼!MySQL 8.0不讲武德,给我挖坑!
  • 原文地址:https://www.cnblogs.com/suanguade/p/14078953.html
Copyright © 2011-2022 走看看