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

来源:互联网 发布:winrar密码破解软件 编辑:程序博客网 时间:2024/06/14 01:27
// 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=3cout << "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;}

0 0
原创粉丝点击