内联函数(inline)

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");
}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值