1、inline
1、内联函数在编译时直接将函数体插入函数调用的地方
2、nline只是一种请求,编译器不一定允许这种请求
3、内联函数省去了普通函数调用时压栈,跳转和返回的开销
inline void PrintA()
{
int a = 10;
cout << a << endl;
}
int main()
{
//PrintA();
//直接插入到函数调用的地方
{
int a = 10;
cout << a << endl;
}
return 0;
}
2、带参数的宏和内联函数
1、内联函数由 编译器处理,直接将编译后的函数体插入调用的地方
2、宏代码片段 由预处理器处理, 进行简单的文本替换,没有任何编译过程
#define MYFUN(a,b)((a)<(b)?(a):(b))
inline int MyFun(int a,int b)
{
return a < b ? a : b;
}
///main
int a = 1;
int b = 3;
int c = MYFUN(++a,b);//<==>宏替换并展开((++a)<(b)?(++a):(b))
//int c = MyFun(++a,b)
cout<<a<<endl;//3
cout<<b<<endl;//3
cout<<c<<endl;//3
3、函数参数相关
1、如果填写参数,就用填写的,否则默认
2、默认参数规则,如果有默认参数出现,那么右边的都必须有默认参数
void MyPrint(int a = 1)
{
cout << a << endl;
}
void MyPrint1(int a,int b,int c = 2,int d = 4)
{
cout << a << b << c << d << endl;
}
void main()
{
MyPrint();
MyPrint(4);
MyPrint1(1, 2);
MyPrint1(1, 2, 8, 9);
system("pause");
}
3、函数占位参数
1)占位参数只有参数类型声明,而没有参数名声明
2)一般情况下,在函数体内部无法使用占位参数
void Fun2(int a,int b,int)
{
cout << a << b << endl;
}
void main04()
{
//Fun2(1, 2);
Fun2(1, 2, 3);
system("pause");
}