1.R“”(元字符串)
R"\\n" = "\\\\n" 转义字符更简单了,不需要多一个\\。在正则表达式中使用元字符更方便。
元字符详细定义:R“字符序列()字符序列” ,字符序列由纯字母组成0-16个。
2.L/U/u" "(编码字符)
L:wchar_t
U:char32_t
u:char16_t
3.noexcept指明某个函数不抛出异常。
eg:
void function()noexcept; = void function()noexcept(true);
void function()noexcept (bool expression);//if false ,throw out exception
4.constexpr (常量表达式)
在编译期间就优化或者计算出结果的表达式。
5.新的Template 特性
5.1模板可以接受变参定义。(T & ... args)看不懂,等大神休假回来请教。page 27
5.2 alias template (别名模板)
5.3 可拥有默认的template 实参
6 Lambda (闭包函数)不具名的函数对象,[]占位符,表示函数名字。
Lambda 是一个功能定义式。定义在statement or expression 内部
使用定义式(lambda body)由[](所谓的lambda inntroducer)引入。
// lambda.cpp : 定义控制台应用程序的入口点。
//
#include "stdafx.h"
#include <iostream>
using namespace std;
int _tmain(int argc, _TCHAR* argv[])
{
int x = 0;
int y = 42;
auto qqq = [x, &y]{
cout << "x: " << x << endl;
cout << "y: " << y << endl;
};
x = y = 77;
qqq();
qqq();
cout << "final y: " << y << endl;
system("pause");
return 0;
}
7.decltype //auto 与之相对
找出表达式的类型:decltype( parameter):: value_type parameter1;获取parameter的累心类型,用来定义了parameter1变量。
template <typename T1,typename T2>
decltype(x+y)::value_type add (T1 x,T2 y);//泛型编程
8.scoped enumeration 感觉这个特性没啥用啊哈哈
enum calss MYENUM:char{mr ,ms ,co,none};
class
char
9.新的数据类型
//char16_t //char32_t //long long //std::nullpte_t
10.模板参数默认值
template <typename T ,typename container = vector <int>>
class MYClass ;
MYClass <int> myc1; //(int ,vector<int >)
11.成员模板(member template )
calss 的成员函数可以是template 。然而member template不能是虚函数。
12.具有可移植性的main函数定义方式
int main()
{
...
}
int main(int argc, char *argv[])
{
...
}
默认 return 0;除0之外都认为是错误返回。在return 之前可以调用 exit(), quick_exit() , (c11)terminate()提前退出进程。
接下来是第四章,笔记可能会逐渐减少,往后,只有需要分析的问题,才会记录。因为这样做笔记进度比较慢,主要会上传一下demo以及标准库的实现原理分析。