[C++][C++11]新特性

1. pack 函数参数:多种数据类型,多个参数 

2. nullptr  给空指针赋值

3. 一致性初始化  全部使用 大括号 {}(见到大括号就见到了 initializer list ), initializer_list<>,本质是一个 array(当array的大小为0的时候,会做成 1,最小为1)

4. auto for C++11中最简单最好用的东西。

5.explicit  几乎只用在 构造函数 (简写为 ctor)中

4,5一起的例子: for (const & a : vector_element) ,如果a的类型和vector_element中的类型不一致,并且a的类型使用了explicit,

那么将会转换失败。

6.=default  = delete

构造函数   有了之后,可以再加一个default,  Foo f(1) ,  Foo f都可以,如果不加default,就没有默认的了

拷贝构造函数   有了之后  =default  = delete 都不可以

赋值拷贝函数  有了之后  =default  = delete 都不可以

一般函数  =default 不可以    = delete 可以   一般很少这么用

析构函数  =default   = delete   二选一

引申出来的重要话题:

什么时候用编译器默认的 big three(构造,拷贝构造,赋值构造,析构)  =default ,自己不用再写呢?

类中没有 指针 的时候。

如果有指针,大概率是需要自己写big three,因为涉及到深浅拷贝

7. using 

 1)更加清楚的定义 函数指针 using FUN_ = void(*)(int, int);

 2)type alias, alias template

https://blog.csdn.net/zzyczzyc/article/details/94290574

8.noexcept

保证函数不抛出异常

void fun() noexcept(true) 无条件不抛异常

void fun() noexcept(xxx) 在xxx条件下不抛异常

9. overwrite 明确表示该函数是用来重定义的,如果写的时候,由于疏忽,写错了,入参的类型/数量,导致找不到相对应的父类函数,则报错--->感觉是帮助我们发现错误用的。

10.final 针对类/函数, 

    类:不可以继承了

    函数:不可以重写了

11.decltype

获取自己比较难推出的数据类型

比如 iterrator,lambda

12.move

本质是指针的操作,一般应用在 临时object或者确定后续不再用的object

将旧指针断掉,新的object指针指向object地址。

旧的就不可以再用了。

13.

©️2020 CSDN 皮肤主题: 大白 设计师:CSDN官方博客 返回首页