12. C++ 内联函数

1.内联函数写法

在函数定义前加上一个inLine,就成了内联函数

//1.内联函数声明,一般也是放在teacher.h中,但是一般可以不写
inline int fun610(int a, int b);

//2.内联函数实现,一般也是放在teacher.h中
inline int fun610(int a ,int b ) {
	return a + b;
}
//3.内联函数的应用场景:函数很小,调用很频繁。

//4.inLine会影响编译器,在编译阶段会对inline函数进行处理,
//系统尝试将调用该函数的动作替换为 函数本体,以提升性能。
//也就是说:编译器会把 fun610(int a, int b)换成a+b

//5.inLine只是建议,但是编译器不一定做

//6. constexpr 函数,可以看成是更严格的一种内联函数

//7. 和 #define 的区别
//1.宏(#define)和内联函数(inline)的理解以及区别:
//
//宏
//缺点:
//
//1.宏没有类型检测,不安全
//
//2.宏是在预处理时进行简单文本替换,并不是简单的参数传递(很难处理一些特定情况。例如:Add(z++))
//
//3.使代码变长
//
//4.宏不能进行调试
//
//5.当预处理搜索#define定义的符号时,字符串常量并不被搜索
//
//优点:
//
//1.加快了代码的运行效率
//
//2.让代码变得更加的通用
//
//内联函数
//类中的成员函数是默认的内联函数
//
//内联函数内不准许有循环语句和开关语句
//
//内联函数的定义必须出现在第一次调用内联函数之前
//
//
//
//缺点:代码变长,占用更多内存
//
//优点:1.有类型检测,更加的安全
//
//2.内联函数是在程序运行时展开,而且是进行的是参数传递
//
//3.编译器可以检测定义的内联函数是否满足要求,如果不满足就会当作普通函数调用(内联函数不能递归,内联函数不能太大)
//
//对比
//相同点:
//
//两者都是可以加快程序运行效率,使代码变得更加通用
//
//不同点:
//
//1.内联函数的调用是传参,宏定义只是简单的文本替换
//
//2.内联函数可以在程序运行时调用,宏定义是在程序编译进行
//
//3.内联函数有类型检测更加的安全,宏定义没有类型检测
//
//4.内联函数在运行时可调式,宏定义不可以
//
//5.内联函数可以访问类的成员变量,宏不可以
//
//6.类中的成员函数是默认的内联函数

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值