C++查漏补缺一(基础梳理)

1、C++17允许使用嵌套的名称空间:

      namespace MySpace::MyHouse::MyRoom {...}

2、可使用名称空间的别名:

      namespace NicName = MySpace::MyHouse::MyRoom;

3、强类型枚举(类型安全,优先使用):

     enum class MyEnum {One,Two,Three,Four };

4、C++17支持if语句的初始化器:

      if(int index=10;index<20) {...}

5、C++17 switch语句中的”fallthrough“特性:

     在case语句块最后添加[[fallthrough]]并且去掉break,告诉编译器此处有意而为之,无需警告

6、C++17 switch语句初始化器:

     switch(int index=0;index+a) {...}

7、函数声明一般性:

     若函数为文件内部使用,则可在源文件中声明并定义此函数;若函数需要供外部使用,则函数需要在头文件中声明,并在源文件中定义

8、C++14 允许要求编译器自动推断函数返回值类型:

     即可以使用auto设置为函数返回类型(要求return语句类型一致且可推断)

9、当前函数的名称:

     每个函数都有一个预定义的局部变量__func__其中包含当前函数的名称(一般用于日志记录)

10、获取C风格数组的大小:

       sizeof(myArr)/sizeof(myArr[0])

11、C++17 结构化绑定:

       auto[x,y,z]=object; 其中object为一个数组或一个结构体等,内部元素需要与x,y,z匹配

12、初始化列表:

       主要应用于编写接收可变参数的函数(多为接收数组)#include<initializer_list>      int Sum(initializer_list<int> list); 

13、使用auto接收函数返回值:

        使用auto接收函数返回值会去除引用和const限定符,从而会创建副本。如果不需要副本则需要使用auto&或const auto&

14、关键字decltype:

        decltype把表达式作为实参,计算出该表达式的类型 decltype(foo()) f2 = foo();

15、统一初始化:

       C++11以后,允许一律使用{...}初始化类型;例如 int a={3};int a{3};其中a可以是任何类型

16、直接列表初始化(无=)/复制列表初始化(有=):

       C++17与auto关键字结合使用时,auto a={11,12};正确 auto a{11,22}错误

17、原始字符串字面量:

       是可以横跨多行代码的字符串字面量,不解析转移符号'\';格式:R"(row string)"

18、std::string字面量:

       字符串字面量通常解释为const char*,而使用用户定义的标准字面量s可以把字符串字面量解释为std::string; 例:auto str="Hello World"s

19、数值与string相互转换:

       std名称空间包含辅助函数, to_string()的多重载函数以及sto**()相关函数;

20、std::string_view类:

       每当函数或方法需要将只读字符串作为一个参数时,优先使用std::string_view代替const std::string&const char*

 

posted @ 2021-04-19 23:20  Claus丶  阅读(91)  评论(0)    收藏  举报