【是C++,不是C艹】 省缺参数 | 函数重载 | 内联函数 上

简介: 省缺参数 | 函数重载 | 内联函数

前言


上期,我带大家给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;
}


活生生的报错: 

6dff441f89339dcaf313a03ba172bdcf_6a49ff62b4634b3390caa95ff194b97a.png

报错原因:没有传递参数


但是,但是,

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;
}


👁️‍🗨️输出结果:

5af9ccdc27fc6367d1471459b6e2b475_369b2c54c1954da9a368a1070fec7c8d.png

🪄解释:

第一次调用:没有传参,都使用省缺参数;

第二次调用:传递了10,这个给了a,其余默认;

第三次调用:传递了10,20,依次给了a,b,c默认;

第四次调用:全传递,不采用省缺值。


好奇心大发,我值传给c行不行?

Func(, , 30);     // 试图传给c


54339452e9d4067082a18ab3d6b79275_3be049d1f7db468884cc9f6392458273.png

🈲看这爆红你就知道行不行了。

为甚?

参数默认是从左往右传递的啊,语法就这样规定的,不行你就给本贾尼打个电话👻


半省缺参数:

半省缺参数可不能理解成一半... ...

它指的是部分省缺。


🌰例子:

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;
}

“我故意保留了一部分省缺,这样才能让你知道这是半省缺!!!”😝

那我这样给省缺行不行?

ddf6f91dec68c7a273f9a60e69823fc4_01e5bef2c2814f26acdcda838d9695e1.png

🈲你说行不行?爆红是爆给谁看的?

🚨记住:

半缺省参数必须从右往左依次来给出,不能间隔着给。


4.注意


这里就总结一下在使用省缺参数中要注意的点:

• 半缺省参数必须从右往左依次来给出,不能间隔着给;

• 缺省参数不能函数声明和定义同时出现;

• 缺省值必须是常量或者全局变量

C语言不支持(编译器不支持)。


目录
相关文章
|
5天前
|
存储 安全 编译器
【C++入门】缺省参数、函数重载与引用(下)
【C++入门】缺省参数、函数重载与引用
|
5天前
|
编译器 C语言 C++
【C++入门学习指南】:函数重载提升代码清晰度与灵活性
【C++入门学习指南】:函数重载提升代码清晰度与灵活性
23 0
|
5天前
|
安全 编译器 程序员
【C++入门】内联函数、auto与基于范围的for循环
【C++入门】内联函数、auto与基于范围的for循环
|
5天前
|
编译器 C语言 C++
【C++入门】缺省参数、函数重载与引用(上)
【C++入门】缺省参数、函数重载与引用
|
5天前
|
编译器 C++
C++函数重载详解
C++函数重载详解
9 1
|
5天前
|
数据安全/隐私保护 C++
C++ 构造函数实战指南:默认构造、带参数构造、拷贝构造与移动构造
C++中的构造函数是特殊成员函数,用于对象初始化。类型包括默认构造函数(无参数)、带参数构造函数、拷贝构造函数和移动构造函数。默认构造函数设置对象默认状态,带参数构造函数允许传递初始化值。拷贝构造函数复制已有对象,移动构造函数高效转移资源。构造函数的访问权限可控制为public、private或protected。理解构造函数有助于编写健壮的C++代码。关注公众号`Let us Coding`获取更多内容。
25 0
|
5天前
|
数据安全/隐私保护 C++
C++ 类方法解析:内外定义、参数、访问控制与静态方法详解
C++ 中的类方法(成员函数)分为类内定义和类外定义,用于操作类数据。类内定义直接在类中声明和定义,而类外定义则先在类中声明,再外部定义。方法可以有参数,访问权限可通过 public、private 和 protected 控制。静态方法与类关联,不依赖对象实例,直接用类名调用。了解这些概念有助于面向对象编程。
16 0
|
5天前
|
存储 安全 编译器
【C++成长记】C++入门 |函数重载、引用、内联函数
【C++成长记】C++入门 |函数重载、引用、内联函数
|
5天前
|
设计模式 安全 算法
【C++入门到精通】特殊类的设计 | 单例模式 [ C++入门 ]
【C++入门到精通】特殊类的设计 | 单例模式 [ C++入门 ]
19 0
|
3天前
|
测试技术 C++
C++|运算符重载(3)|日期类的计算
C++|运算符重载(3)|日期类的计算