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
- C++入门,内联函数和默认参数还有函数占位符
- 内联函数、默认参数和函数占位参数
- C++中 函数的升级---内联函数、默认参数、占位参数、函数重载、C与C++结合
- C++基础学习笔记----第三课(内联函数、默认参数、占位参数)
- inline, 默认参数,函数占位符,函数重载
- C++函数默认参数及占位参数
- 内联函数,重载函数,默认参数
- C++函数的重载、内联和默认参数
- 3.8 函数的重载、内联和默认参数
- C++函数的重载、内联和默认参数
- C++函数的重载、内联和默认参数
- 4、不一样的C++系列--函数的默认参数和占位参数
- C++函数其他(重载、默认参数、内联、函数模板)
- 默认内联成员函数
- 默认参数和占位参数
- 默认参数和占位参数
- 默认参数和占位参数
- C/C++参数(默认参数、占位符参数)
- dubbo2.5-spring4-mybastis3.2-springmvc4-mongodb3.4-redis3.2整合(九)之 spring中定时器quartz的整合
- Tomcat Wrapper组件
- TOMCAT环境搭建
- ORA-02291: 违反完整约束条件 (*) - 未找到父项关键字
- form表单提交400问题springmvc
- C++入门,内联函数和默认参数还有函数占位符
- SELinux/SEAndroid 实例简述(二) TE语言规则
- Java8中Lambda的用法
- Codeforces 100726A 或 POJ 3842
- web测试工作指南
- 将图像进行小波分解
- Zabbix3.x安装图解教程
- HQL中左连接,右连接,内连接
- 仍然在迷茫,仍不愿放弃