前言
上期,我带大家给C++打了招呼,捎带着认识了命名空间和输入输出,那么这期带大家继续学习C++,让我们开始吧!
注:
你最好是学完了C语言,并学过一些初阶的数据结构。
目录
Part1:省缺参数
1.一个引子
2.概念
3.分类
4.注意
Part2:函数重载
1.一个引子
2.概念
3.不支持函数重载
Part3:内联函数
1.概念
2.特性
正文
Part1:省缺参数
1.一个引子
我把这段代码抛给你:
#include<iostream> using namespace std; void Func(int a) { cout << a << endl; } int main() { Func(3); return 0; }
挺平平无奇的,是吧?
👁️🗨️输出结果:3
❓那如果我手贱,调用时没传参数呢?
#include<iostream> using namespace std; void Func(int a) { cout << a << endl; } int main() { Func(); // 这里没传参数 return 0; }
❌活生生的报错:
报错原因:没有传递参数
但是,但是,
C++可以这样玩:
#include<iostream> using namespace std; void Func(int a = 114514) // 这里变了哈 { cout << a << endl; } int main() { Func(); // 同样没有传参 return 0; }
👁️🗨️输出结果:114514
这就是“省缺参数”,接下来就让我带你学它!!!
2.概念
准确地说,什么是省缺参数呢?
缺省参数是声明或定义函数时为函数的参数指定一个缺省值。
在调用该函数时,如果没有指定实参则采用该形参的缺省值,否则使用指定的实参。
简单说:你传了就用你的,不传也没关系,我用自己的。
在引入当中的例子就可以很好地解读省缺参数的基本概念:
#include<iostream> using namespace std; void Func(int a = 114514) // 指定省缺值 { cout << a << endl; } int main() { Func(3); // 指定实参,使用实参 Func(); // 不指定实参,使用省缺值 return 0; }
👁️🗨️输出结果:3
114514
3.分类
省缺参数分两类:全省缺参数 和 半省缺参数。
• 全省缺参数:函数的参数都指定了省缺值;
• 半省缺参数:函数的参数部分指定了省缺值。
接下来分别讲解:
全省缺参数:
🚨注意:一定是全部的参数都要给省缺值
代码演示:
#include<iostream> using namespace std; void Func(int a = 1,int b = 2,int c = 3 ) // 都给了哈 { cout << a << ' '; cout << b << ' '; cout << c << endl; } int main() { Func(); // 不传参 Func(10); // 传第一个参 Func(10, 20); // 传第一,第二个参 Func(10, 20, 30); // 全传参,不采用省缺值 return 0; }
👁️🗨️输出结果:
🪄解释:
第一次调用:没有传参,都使用省缺参数;
第二次调用:传递了10,这个给了a,其余默认;
第三次调用:传递了10,20,依次给了a,b,c默认;
第四次调用:全传递,不采用省缺值。
❓好奇心大发,我值传给c行不行?
Func(, , 30); // 试图传给c
🈲看这爆红你就知道行不行了。
为甚?
参数默认是从左往右传递的啊,语法就这样规定的,不行你就给本贾尼打个电话👻
半省缺参数:
半省缺参数可不能理解成一半... ...
它指的是部分省缺。
🌰例子:
void Func(int a, int b = 2, int c = 3) // 给b和c默认值 { cout << a << ' '; cout << b << ' '; cout << c << endl; }
void Func(int a, int b, int c = 3) // 给c默认值 { cout << a << ' '; cout << b << ' '; cout << c << endl; }
“我故意保留了一部分省缺,这样才能让你知道这是半省缺!!!”😝
❓那我这样给省缺行不行?
🈲你说行不行?爆红是爆给谁看的?
🚨记住:
半缺省参数必须从右往左依次来给出,不能间隔着给。
4.注意
这里就总结一下在使用省缺参数中要注意的点:
• 半缺省参数必须从右往左依次来给出,不能间隔着给;
• 缺省参数不能在函数声明和定义中同时出现;
• 缺省值必须是常量或者全局变量;
• C语言不支持(编译器不支持)。