概述
// 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;
}
最后
以上就是自信蜗牛为你收集整理的C++入门,内联函数和默认参数还有函数占位符的全部内容,希望文章能够帮你解决C++入门,内联函数和默认参数还有函数占位符所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复