C++笔记之函数新特性
来源:互联网 发布:大神小的知错了txt下载 编辑:程序博客网 时间:2024/06/04 17:57
一、函数参数默认值
C++中定义函数时可以这样定义和声明:
void fun(int i, int j = 5, int k = 10);
void fun(int i, int j , int k ){
/**函数体**/
cout << i << j << k;
}
在声明函数时为函数参数 赋一个默认值,其中j和k在调用时是可选项,调用该函数时,可以传一个参数,也可以传两个参数,也可以传三个参数。如果,只传一个参数,那么j和k的默认值就为5和10。
注意:有默认参数值的参数必须在参数表的最右端。
#include <iostream>using namespace std;void fun(int i, int j = 5, int k = 10);int main(){ fun(20);//打印结果为20510 fun(20, 30);//打印结果为203010 fun(20, 30, 40);//打印结果为203040}void fun(int i, int j = 5, int k = 10){ /**函数体**/ cout << i << j << k;}
二、函数重载
在相同作用域内,用同一函数名定义的多个函数,参数个数和参数类型不同。
返回值类型不同不能算作函数重载。
假设有两个函数实现了重载:
getMax(int x, int y, int z){}
getMax(double x, double y){}
他们实际在计算机中存储的形式分别为:
getMax_int_int_int和getMax_double_double
所以他们的函数名虽然相同,但是由于参数列表不同,所以在计算机内部是不同的函数,计算机是可以分辨出重载的函数的。
三、内联函数
声明函数时,在函数类型前面加上inline修饰,这个函数就变成了内联函数。
引用自:当函数被声明为内联函数之后, 编译器会将其内联展开, 而不是按通常的函数调用机制进行调用。
也就是说,当函数被声明为内联函数之后,程序编译时,当遇到这个函数时,主调函数内调用函数的那部分语句将被函数体语句覆盖。在函数调用非常频繁时,建议使用内联,这样会节省很多时间。
内联函数的逻辑结构应该尽量简单,不应包含for循环、while循环等复杂的结构。
递归函数不应该被声明为内联函数。
内联编译是建议性的,由编译器决定。即使函数被声明为内联函数,在编译时可能也不会以内联的方式编译。
在类中声明的函数,即使不在声明前加“inline”关键字,编译器在编译的时候也会优先将函数编译为内联函数,但是如果函数体逻辑结构太复杂,就会编译成普通的函数
- C++笔记之函数新特性
- C++11新特性学习笔记之移动构造函数
- 笔记之1.5新特性
- C# 3.0新特性之扩展函数
- Oracle11.2新特性之listagg函数
- Oracle11.2新特性之listagg函数
- Oracle11.2新特性之listagg函数
- Swift 新特性之柯里化函数
- C++11新特性之Lambda函数
- c++基础之函数新特性
- c++初级 之 函数的新特性
- JDK8新特性之函数式接口
- JDK8新特性之函数式接口
- es6新特性之箭头函数
- JAVA笔记 之 JDK新特性
- C++11 新特性之Lambda函数(匿名函数)
- C++ 函数新特性
- PHP学习笔记——新特性匿名函数
- 排序算法(4):基数排序
- 448. Find All Numbers Disappeared in an Array 难度:easy
- 【Unity3D入门教程】鼠标和键盘输入与控制
- 二叉树前中后序遍历相互求法
- 在 Linux 虚拟机中手动安装或升级 VMware Tools
- C++笔记之函数新特性
- spring的restTemplate注意点
- java虚拟机中的对象
- android调试工具--dumpsys
- HDU-1253 胜利大逃亡(简单三维广搜BFS)
- openjdk8的环境配置
- CentOS7 下安装和配置本地用户登录VSFTP服务器
- 把驱动代码加入linux内核
- 统计字符小写字母个数