• 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)

02-02 10:59