知识点6
内联函数:就是将常用的函数直接展开,没有建立栈帧的开销,提升运行效率。用 inline 修饰要内联的函数即可。inline 对编译器只是建议,不一定执行。一般将规模小、非递归且频繁调用的函数内联。inline 不建议声明和定义分离,分离会导致链接错误。因为 inline 被展开,就没有函数地址了,链接就会找不到。
知识点7
auto 关键字:可以理解为类型自动识别,可用与类型难写或推导式含义模糊时。可与指针和引用结合起来用;当在同一行定义多个变量时,这些变量必须是同一类型的,否则会报错。auto 不能做函数参数类型,不能声命数组。
void Testauto() { auto a = 1, b = 2; auto c = 3, d = 4.0; //该行代码会编译失败,因为编译器会对第一个变量类型进行推导, //然后定义第二个变量。 }知识点8
基于范围的 for 循环:for 循环后的括号由冒号“:”分为两部分:第一部分是范围内用于迭代的变量,第二部分表示被迭代的范围。
void TestFor() { int array[] = { 1, 2, 3, 4, 5 }; for (int i = 0; i < sizeof(array) / sizeof(array[0]); ++i) array[i] *= 2; for (int* p = array; p < array + sizeof(array)/ sizeof(array[0]); ++p) cout << *p << endl; } //用 auto 可写为 void TestFor() { int array[] = { 1, 2, 3, 4, 5 }; for(auto& e : array) //加上引用便于修改值,类似传值 e *= 2; for(auto e : array) cout << e << " "; return 0; }知识点9
指针空值:NULL被定义为字面常量0,显示数据类型时为 int;所以为了在给指针初始化时方便,C++11将 nullptr 作为新关键字引入来做指针空值。