Effective.Modern.C++
文章平均质量分 57
洗屁屁的新特性
剑决浮云气
事了拂衣去,深藏功与名
展开
-
理解 decltype关键字
1. decltype关键字decltype被称作类型说明符,它的作用是选择并返回操作数的数据类型。例如Test2函数的返回值是std::initializer_list类型std::initializer_list<int> Test2(){ return { 1,2,3 };}我们使用一致化初始列表decltype(Test2()) Arr1 = { 1,2,3 };可以运行,所以decltype关键字得到了Test2返回值的类型2.更多的常规例子cons原创 2022-01-12 09:40:30 · 293 阅读 · 0 评论 -
理解自动类型推导 auto
1.Understand auto type deduction①auto自动类型推导和模板的类型推导几乎一样,只在少数地方有差别②当一个变量用auto声明的时候template<typename T>void f(ParamType param);auto所扮演的角色 就是T, 类型修饰符扮演的角色 就是param③条款1 对auto仍然适用(我前面的博客写过)• Case 1: The type specifier is a pointer or reference, bu原创 2022-01-12 09:40:05 · 225 阅读 · 0 评论 -
3.理解模板类型推导 Function Arguments
1. Function Arguments数组不是唯一一个在进行类型推导的时候,会变成指针的东西。函数类型也会被推断成函数指针2.测试void someFunc(int, double); // someFunc is a function; // type is void(int, double) template<typename T>void f1(T param); // in f1, param passed by valuetemplate<typename原创 2022-01-12 09:39:41 · 127 阅读 · 0 评论 -
2.理解模板类型推导Array Arguments
1. Array Argumentsconst char name[] = "ZZH"; // name's type is // const char[13]const char * ptrToName = name; // array decays to pointer学过C语言的人 都知道 name的真实类型 是const char[13] ,他的目标类型是 const charconst char *的目标类型是 const char 所以他可以指向该数组2. 那么当pass by v原创 2022-01-12 09:38:55 · 85 阅读 · 0 评论 -
1.理解模板类型推断
1. Understand template type deductiontemplate<typename T>void f(ParamType param);f(expr); 在编译时刻,编译器使用expr的类型去推断出两种类型①是T②是ParamType注意 模板类型和参数类型通常是不一致的 参数类型经常有些修饰template<typename T>void f(const T& param); // ParamType is const T&原创 2022-01-12 09:37:53 · 121 阅读 · 0 评论