Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1614652
  • 博文数量: 184
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 2388
  • 用 户 组: 普通用户
  • 注册时间: 2016-12-21 22:26
个人简介

90后空巢老码农

文章分类

全部博文(184)

文章存档

2021年(26)

2020年(56)

2019年(54)

2018年(47)

2017年(1)

我的朋友

分类: C/C++

2021-02-01 19:22:54

  • nullptr是个新关键字,它会被自动转换为各种pointer类型,但不会被转换成任何整数类型,它的类型是:std::nullptr_t
  • auto完成自动类型推倒,如: auto i = 42。但是一定要加上初始化操作,语法糖的干活
  • 一致性初始化: 任何初始化动作,都可以使用大括号这个相同的语法:

点击(此处)折叠或打开

  1. std::vector<int> v{2,3,4};
  2. int x{5.3};// dev会warning
  • move语义和右值引用:用于避免非必要的拷贝和临时对象创建。需要程序员必须自行指明move可行。位于当中的std::move()会将指定元素转换为右值引用,这意味着这个变量将不会再被需要,可以填充其他。这需要该类型实现一个所谓的move constructor: X(X&& rvalue)和一个move assignment: X& operator=(X&& rvalue),如果没有,默认执行相应的copy语义。
  • 字符串字面常量: R"delim(xxxx)delim",其中xxxx就是raw string,这点跟python有点像,delim是一个字符序列,最多16个基本字符,不可包含反斜线、空格和小括号,delim是为了可以在xxxx中写入)"而用。
  • noexcept: 指明某个函数不打算抛出异常,如果其抛出异常,程序会终止(-->std::terminate()---> std::abort())。
  • constexpr: 让表达式核定于编译期
  • 带域的(Scoped)Enumeration: 其定义如下:

点击(此处)折叠或打开

  1. enum class test1:char{t1, t2, t3, t4};
这里相较于老版本的enum有如下优点:1. 绝不会和int隐式转换,如果数值在定义域外被使用,必须指定class, 如: test1::t1; 2. 可以显示定义底层类型,默认是int(底层类型必须是一个integral type)

阅读(21447) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~