C++的inline函数
程序员文章站
2024-03-23 13:29:04
...
C++中使用const 变量替换宏定义
当然C++中也有使用inline 函数替换宏代码片段;
#include <iostream>
using namespace std;
inline void printfA()
{
int a =10;
cout << "a = " << a << endl;
}
int main()
{
printfA();
cout << "hello world!"<<endl;
system("pause");
return 0;
}
其实 内联函数只是让C++编译器知道什么是内联函数 处理的时候回去替换整个一段代码的片段,其他的对于程序员来说都是一样的,直接可以当成普通的函数处理;
- 内联函数必须和实现 的函数体写在一块,不能进行声明,虽然声明内联函数能够通过编译,但是经过声明内联函数C++有可能不会将其在当做成内联函数处理;
- 内联函数内有普通函数的开销,没有压栈,跳转返回,所以速度很快,通常将短小精悍的函数定义成内联函数;
- 内联函数也有普通函数的特征,会进行参数的检查返回类型的检查等
- 内联函数是对编译器的一种请求,所以编译器可能会拒绝这种请求;
- 内联函数由编译器处理直接编译之后将函数体插入调用的地方
- 宏代码片段由宏处理器处理,进行简单的替换,没有任何的编译过程
- 内联函数由编译器处理,因此一些函数即使没有声明内联函数,也可能被编译器处理成内联函数
函数的占位参数 函数调用时必须写够参数
void printfA(int a,int b,int)
{
cout << a << b<<endl;
}
//调用的时候必须歇够三个参数
如printfA(3,2,1);
占位参数和默认参数结合为以后的程序扩展留下线索
#include <iostream>
using namespace std;
void kuozhan(int a,int b,int =1)
{
cout << "a =" << a <<"b = " << b << endl;
}
int main()
{
kuozhan(1,2);
kuozhan(1,2,3);
cout << "hello world!"<<endl;
system("pause");
return 0;
}
上一篇: #define和const的区别