第八章 函数探幽(1)

这章英文名字叫adventures in Functions,中文译者把它翻译成函数探幽。。。


1. 内联函数

内联函数是C++提高程序运行速度所做的一项改进。常规函数执行时,程序将在函数调用后立即存储该指令的内存地址,并将函数参数复制到堆栈,跳到标记函数起点的内存单元,执行函数,然后跳回到地址被保存的指令处。这一跳一跳的就降低效率了。而内联函数就不会跳来跳去,但代价就是需要占用更多内存。如果程序在10个不同的地方调用一个内联函数,则程序将包含该函数代码的十个副本。


内联函数怎么使用呢:

在函数声明前加上关键字inline

在函数定义前脚伤关键字inline


注意的是内联函数不能递归,不能太大。


2. 引用变量

引用变量是已定义的变量的别名,主要用途使用做函数的形参,通过将引用变量用作参数,函数使用原始数据,而不是副本。

引用变量这样定义:

int a;

int & b = a;

这样a和b允许呼唤,因为它们指向相同的值和内存单元。

注意声明引用变量是必须对其初始化,不能

int a;

int &b;

b = a; // 不行!


如果函数这样定义

void fun(int a); //这样的函数是按值传递

void fun(int &a);//这样的函数将引用作为函数参数,称为按引用传递。


注意上例中使用引用传递时a必须是一个变量,不能是一个表达式。

使用引用参数应尽可能使用const:

使用const可避免无意中修改数据的编程错误;

使用const使函数能够处理const和非const实参,否则将只能接受非const数据;

使用const引用使函数能够正确生成并使用临时变量。


引用非常适合于结构和类。

8.2.7总结了何时使用引用参数

使用引用参数的两个主要原因:

可以修改调用函数的数据对象;

通过传递引用而不是整个数据对象,可以提高程序运行速度。这条对结构和类意义重大。


看起来引用和指针差不多,何时用什么的纸雕原则:

对于使用传递的值不做修改的函数:

如果数据对象很小,如内置数据类型或小型结构,则按值传递

如果数据对象是数组,则使用指针,因为这是唯一选择,并将指针声明为执行const的指针

如果数据对象是较大的结构,则使用const指针或const引用,以提高程序效率。

如果数据对象是类对象,则使用const引用。


对于想要修改调用函数数据的函数:

如果数据对象是内置数据类型,则使用指针

如果数据对象是数组,只能使用指针

如果数据对象是结构,则使用指针或引用

如果数据对象是类,则使用引用

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值