C++内联函数

1、概念
以inline修饰的函数叫做内联函数,编译时C++编译器会在调用内敛函数的地方展开代码。因为没有函数压栈的开销,所以内联函数可以提升程序运行的效率。

2、特性
(1)inline是一种以空间换时间的做法,省去调用函数开销。
(2) inline对于编译器而言只是一个建议,编译器会自动优化。如果定义为inline的函数体内有循环、递归,或者代码很长,编译器优化时会忽略掉内联的性质。
说明:一般将规模很小而且使用频繁的函数声明为内联函数。

3、使用方法
指定内联函数的方法很简单,只需要在函数首行的左边加一个关键字inline。
【例】

#include<iostream>

#include<stdlib.h>

 

using namespace std;

 

inline int Add(int left, int right)

{

    return left + right;

}

 

int main()

{

    cout << Add(10, 20) << endl;

 

    system("pause");

    return 0;

}

运行结果:
在这里插入图片描述
上面的程序中,Add函数就是内联函数。注意:可以在函数的声明和定义时同时加inline,也可以只在一处声明inline。

4、inline成员函数
类的成员函数也可以指定为内联函数。如果类的成员函数在类内定义,默认是内联函数。如果类的成员函数在类外定义,则需要加inline关键字显示的声明为内联函数。值得注意的是,如果在类外定义inline函数,则必须将类定义和成员函数的定义放到同一个头文件中,否则编译时无法将函数代码拷贝到函数的调用点。只有类外定义的成员函数的规模很小,而且调用频率很高时,才将此成员函数指定为内联函数。

5、面试题
(1)以空间换取时间的方式
1)索引;
2)哈希表;
3)内联函数;

(2)宏的优缺点
1)优点:
A、增强代码的复用性,方便修改;
B、宏只是进行简单的字符串替换,没有参数的入栈和出栈的开销,能有效提高性能。
2)缺点
A、不进行类型检查,不安全;
B、存在边界问题,容易产生二义性;
C、不能进行调试;
D、宏不支持递归;

(3)在C++中有哪些技术替换宏?
1)常量定义换用const;
2)函数定义换用内联函数;
3)类型重定义换用typedef

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值