C++入门,内联函数和默认参数还有函数占位符

// inline内联函数.cpp : 定义控制台应用程序的入口点。
//1.内联函数必须和函数体写在一起,只声明C++编译器不会报错,但也不会把它视为内联函数
//2.内联函数在最终生成的代码中是没有定义的
//3.C++编译器会把函数体直接插入到函数调用的地方
//4.内联函数没有普通函数的开销(压栈,跳转,返回等等)
//5.内联函数是一种请求,C++编译器不一定同意
//6.内联函数不能存在任何形式的循环语句,也不能存在过多的条件语句
//7.函数体不能过于庞大
//8.不能进行取地址操作

#include "stdafx.h"
#include<iostream>
using namespace std;

//内联函数的写法
inline void PrintfA()
{
	int a = 10;
	cout << "a: " << endl;
}
//这是一个带参数的宏片段
#define MYFUNC(a,b) ((a) < (b) ? (a) : (b))//带参数的宏标识符和参数列表要挨着,不能有空格
//这是一个内联函数
inline int MyFunc(int a, int b)
{
	return a < b ? a : b;
}
//关于默认参数和函数占位符
void Fun1(int a, int b, int c = 1, int d = 2)//在参数列表中,可以赋初值,但是默认参数必须要放在普通参数的后边,也不能放中间
{
	return;
}

void Fun2(int)//在函数列表中填入参数类型,但是不填形参,此为函数占位符
{
	return;
}
//默认参数和函数占位符相结合
void Fun3(int a, int b, int = 1)//同样也要放在普通参数的后边
{
	return;
}

int main()
{
	PrintfA();//内联函数的调用和普通函数没有区别

	int a = 1;
	int b = 3;
	//int c = MyFunc(++a, b);//结果为a=2,b=3,c=2,很正常的人脑思维
	int c = MYFUNC(++a, b);//使用宏的计算方法要进行宏替换==>((++a)<(b)?(++a):(b));所以++a执行了两次所以后来结果为//a=3b=3c=3
	cout << "a = " << a << endl << "b = " << b << endl << "c = " << c << endl;

	//关于Fun1的调用
	Fun1(1, 3);//因为有两个普通参数,所以调用的时候填的实参最少要两个,但是最多4个
	//关于Fun2的调用
	Fun2(2);//因为有函数占位符所以实参不能为空
	//关于Fun3的调用
	Fun3(1, 2);
	Fun3(1, 2, 3);//事实证明,写两个参数,三个参数都可以

    return 0;
}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值