前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >【C++干货基地】C++入门篇:输入输出流 | 缺省函数 | 函数重载(文末送书)

【C++干货基地】C++入门篇:输入输出流 | 缺省函数 | 函数重载(文末送书)

作者头像
鸽芷咕
发布2024-05-25 21:00:13
410
发布2024-05-25 21:00:13
举报
文章被收录于专栏:C++干货基地C++干货基地

一、C++的输入输出

每当我们学习一个函数的时候,最首先学习的就是输入和输出那么我们来看看C++是如何来像这个世界打个招呼吧!

1.1 cout 输出函数

在C++ 中的输入函数做了新的升级而且在以往我们 写C语言的时候每个类型的变量都要书写函数类型过于玛法了所以在 C++ 输出是自动识别类型的:

  • cout 中的 Cconsole 控制台的意思:
  • cout 就代表 输出到控制台

🍸 代码演示:

代码语言:javascript
复制
#define _CRT_SECURE_NO_WARNINGS 1
#include<iostream>
using namespace std;

int main()
{
	int b= 10;
	double x = 1.11;
	char a = 'h';

	cout << b <<"\n";
	cout << x << endl;
	cout << a << endl;

	return 0;
}

这里补充一下,C++在开发出来的时候本贾尼博士觉得写 “\n” 来进行换行台麻烦了所以:

  • 在C++ 中换行是 endl
  • endl 代表的英文意思是
  • end 代表结束, lline 行的意思,结束这一行就是换行的意思

1.2 <<流插入 & >> 流提取

在C++中 <<是流插入运算符,>>是流提取运算符。同时C++也兼容

  • C语言中 << 左移操作符 >> 右移动操作符

🍸 代码演示:

代码语言:javascript
复制
#define _CRT_SECURE_NO_WARNINGS 1
#include<iostream>
using namespace std;

int main()
{
	int a = 100;
	a = a << 1;

	cout << a << endl;
	return 0;
}

1.3 cin 输入函数

cin 是C++ 中的输入函数,和 cout 一样都是 ostream和istream类型的对象,需要我们搭配流提取操作符一起使用:

🍸 代码演示:

代码语言:javascript
复制
#define _CRT_SECURE_NO_WARNINGS 1
#include<iostream>
using namespace std;

int main()
{
	int a = 0;

	cin >> a;
	cout << a << endl;
	return 0;
}

二、缺省函数

缺省函数 又叫 默认参数 听名字其实就能大概猜出来是什么意思,其实就是当我们没有给函数参数传递值的时候就使用我们赋予的缺省值/默认值。

2.1 缺省函数的概念

缺省参数是声明或定义函数时为函数的参数指定一个缺省值。在调用该函数时,如果没有指定实 参则采用该形参的缺省值,否则使用指定的实参。

🍸 代码演示:

代码语言:javascript
复制
void Func(int a = 0)
{
 cout<<a<<endl;
}
int main()
{
 Func();     // 没有传参时,使用参数的默认值
 Func(10);   // 传参时,使用指定的实参
return 0;
}

2.2 缺省函数的分类

2.2.1 全缺省函数

全缺省函数就是函数的全部形参给了缺省值或者默认值

🍸 代码演示:

代码语言:javascript
复制
void Func(int a = 10, int b = 20, int c = 30)
 {
     cout<<"a = "<<a<<endl;
     cout<<"b = "<<b<<endl;
     cout<<"c = "<<c<<endl;
 }
2.2.2 半缺省函数

半缺省函数就是只给部分缺省值, 但是半缺省参数必须从右往左依次来给出,不能间隔着给

  • 这是因为隔着给参数的话编译器并不能自动识别到底是使用缺省参数还是不使用
  • 如果全给了就完全没有意义隔着给了

📑 错误展示:

代码语言:javascript
复制
void fun(int a = 10, int x , int y = 10)
{

}

int main()
{
	fun(1);
	return 0;
}

这里的1究竟是想给 x 还是 a 呢?如果写俩个那么隔着写的意义再哪里呢?

🍸 代码演示:

代码语言:javascript
复制
void Func(int a, int b = 10, int c = 20)
 {
     cout<<"a = "<<a<<endl;
     cout<<"b = "<<b<<endl;
     cout<<"c = "<<c<<endl;
 }

缺省函数其实在实际范围应用非常的广泛,让函数的用法更加灵活我们可以传一个参数也可以或者传2个参数也可以

  • 比如说我们在对栈开辟空间时候就会遇到好几种情况以往我们都是默认先开辟4个而现在

🍸 代码演示:

代码语言:javascript
复制
#include<iostream>
#include"Stack.h"
using namespace std;

int main()
{
	struct Stack st1;

	// 1、确定要插入100个数据
	StackInit(&st1, 100);  

	// 2、只插入10个数据
	struct Stack st2;
	StackInit(&st2, 10);

	// 3、默认插入
	struct Stack st3;
	StackInit(&st3);
	return 0;
}
2.2.3 缺省函数的注意事项
  • 1. 半缺省参数必须从右往左依次来给出,不能间隔着给
  • 2. 缺省参数不能在函数声明和定义中同时出现

还有一个很重要的一点是当函数声明和定义分离的时候,应在声明中去声明缺省函数,定义中不能进行同时声明缺省函数

2.2.4 函数声明和定义分离,缺省函数只能在声明定义

为什么函数声明和定义分离,缺省函数只能在声明定义呢?其实第一个原因是因为

  • 🌱 缺省函数在声明和定义分离的时候特别容易写错
  • 🌱 还有一个很大的原因是因为从编译原理上面来看

源文件在进行编译的时候就会出现,如果我们不在缺省函数只能在 声明定义 缺省函数的话

  • 程序在 编译的时候就会被检查语法拦截住了
  • 预处理是把 头文件展开 而头文件里面我们没有声明缺省函数参数 又没有写语法上就直接错误了

📑 错误示范:

三、函数重载

在C++ 里面还对函数做了新的升级,函数重载,即一个函数名可以根据参数类型不同拥有多个功能:

  • 这在C语言中是绝对不支持的那么怎么样才算函数重载呢?

3.2 函数重载概念

函数重载:是函数的一种特殊情况,C++允许在同一作用域中声明几个功能类似的同名函数,这些同名函数的形参列表(参数个数 或 类型 或 类型顺序)不同,常用来处理实现功能类似数据类型不同的问题。

在C++中,只要函数名相同,函数参数不同就可以构成重载

  • 🌱 函数参数类型不同
代码语言:javascript
复制
#include<iostream>
using namespace std;
// 1、参数类型不同
int Add(int left, int right)
{
	cout << "int Add(int left, int right)" << endl;
	return left + right;
}
double Add(double left, double right)
{
	cout << "double Add(double left, double right)" << endl;
	return left + right;
}

int main()
{
	Add(10, 20);
	Add(10.1, 20.2);
}
  • 🌱 函数个数不同
代码语言:javascript
复制
#include<iostream>
using namespace std;
// 2、参数个数不同
void f()
{
	cout << "f()" << endl;
}
void f(int a)

int main()
{
	f();
	f(10);
}
  • 🌱 参数顺序不同(本质上还是参数类型不同)

🍸 代码演示:

代码语言:javascript
复制
#include<iostream>
using namespace std;
// 3、参数类型顺序不同
void f(int a, char b)
{
	cout << "f(int a,char b)" << endl;
}
void f(char b, int a)
{
	cout << "f(char b, int a)" << endl;
}
int main()
{
	f(10, 'a');
	f('a', 10);
	return 0;
}
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2024-05-24,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 一、C++的输入输出
    • 1.1 cout 输出函数
      • 1.2 <<流插入 & >> 流提取
        • 1.3 cin 输入函数
        • 二、缺省函数
          • 2.1 缺省函数的概念
            • 2.2 缺省函数的分类
              • 2.2.1 全缺省函数
              • 2.2.2 半缺省函数
              • 2.2.3 缺省函数的注意事项
              • 2.2.4 函数声明和定义分离,缺省函数只能在声明定义
          • 三、函数重载
            • 3.2 函数重载概念
            领券
            问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档