c++对c的拓展_内联函数

Posted spking

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了c++对c的拓展_内联函数相关的知识,希望对你有一定的参考价值。

目的:保持处理宏的高效及安全性

解决的问题:1、c中预处理宏有些难以发现的问题

                      2、c++ 中预处理不能访问类成员,不能作用类的成员函数

作用:无函数调用时开销,又可像普通函数般进行参数、返回值类型安全检查、作为成员函数

注意:1、类的成员函数默认为内联函数

           2、内联函数只是对编译器都建议,不一定会内联,有时未声明的函数也有可能内联,取决于编译器

内联函数的限制(可能不进行内联):1、不能存在过多的判断语句 2、不能存在任何形式的循环语句 3、函数体不能过大 4、不能对函数进行取地址操作

与宏函数的区别:1、发生在编译阶段宏函数发生在预处理阶段,都一样无调用函数开销

                              2、宏函数易出错,内联函数则不会

inline int myadd(int a, int b)   //普通函数前加上inline关键字使其成为内联函数 函数体和定义要结合在一起单写声明编译器开待为普通函数

return a+b;

宏函数的缺陷:

# include <"iostream">

using namespace stu;

#defind MYCMP(a,b)  (a)<(b)?(a):(b)

inline int mycmp(int a,int b)

return a<b?a:b;

int main()

int a=1;

int b =5;

int c=mycmp(a++,b);

//int d=MYCMP(a++,b);

cout << c<< endl;

//cout <<d<<endl:

return 0;

运行结果:2(运行宏函数的话结果为3)

以上是关于c++对c的拓展_内联函数的主要内容,如果未能解决你的问题,请参考以下文章

c++: inline_函数与内联函数(超详细)

C++引用,内联函数,函数重载二义性总结_C++

函数内联 inline,__inline,__forceinline

面向对象程序设计-C++_课时18内联函数

C++内联函数

C++——引用内联函数