前言
"打牢基础,万事不愁" .C++的基础语法的学习."学以致用,边学边用",编程是实践性很强的技术,在运用中理解,总结.
引入
<C++ Prime Plus> 6th Edition(以下称"本书")第8章内容解读
内联函数
1>本书P253--8.1节C++内联函数第二段:常规函数调用也使程序跳到另一个地址(函数的地址),并在函数结束时返回.下一段:对于内联代码,程序无需跳到另一个位置处执行代码,再跳回来。因此,内联函数的运行速度比常规函数稍快,但代价是需要占用更多内存。(黑体字是原话)
----非内联函数和内联函数在程序被编译后产生的机器指令不一样.
调用非内联函数时,留下一个函数地址,CPU处理到函数地址时会跳到函数定义的位置执行代码,然后跳转回来(return)继续执行以下代码.编译后的内联函数,把代码一并放到当前位置,节省了CPU跳转执行和跳转返回的时间.见本书P254图8.1.所以,内联函数占内存多,但运行快.
2>内联函数和寄存器变量register一样,是一种请求.即使定义成内联函数,编译器未必满足,见本书P254说明.
3>内联函数不能递归
4>内联函数优于宏定义
C语言中的宏定义,不主动识别(),所以容易写错.内联函数没有这个顾虑.
内联函数的使用场景
代码内容少,调用次数不多,不用递归时可考虑使用内联函数
引用
本书P255最后一段: 但引用变量的主要用途是用作函数的形参。通过将引用变量用作参数,函数将使用原始数据,而不是其副本.(黑体字是原话)
引用已写过几篇文章,核心就在黑体字中,使用原值.
引用主要用于表示单个变量的指针(不支持数组),多用于类对象引用做形参.如果想修改原值,用对象引用作形参,如果仅访问,对象引用前加const修饰.----代码的"潜在规则"
本书P274中间8.2.7"何时使用引用参数"有详细使用说明
关于右值引用:本书截图如下
测试代码如下
/*已测试*/
/*变量赋值左值引用,常量赋值右值引用*/
#include<iostream>
using namespace std;
int main(void) {
int a = 3;
int&& b = 3; //常量赋值给右值引用
int& ref_c = a; //变量赋值给左值引用
int d = b; //右值引用赋值给变量
int e = ref_c; //左值引用赋值给变量,相当于指针
cout << "a的值是:" << a << endl;
cout << "b的值是:" << b << endl;
cout << "c的值是:" << ref_c << endl;
}
区别左值引用和右值引用:左值引用不能接收常量,如int &f=3;//错误.右值引用可以接收常量.
在什么情况下使用右值引用,暂时放一放.
默认参数
概念:在定义函数时,设置一

最低0.47元/天 解锁文章
580

被折叠的 条评论
为什么被折叠?



