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

news2024/9/29 5:25:01

在这里插入图片描述

🎬 鸽芷咕:个人主页

 🔥 个人专栏: 《C++干货基地》《粉丝福利》

⛺️生活的理想,就是为了理想的生活!

引入

  哈喽各位铁汁们好啊,我是博主鸽芷咕《C++干货基地》是由我的襄阳家乡零食基地有感而发,不知道各位的城市有没有这种实惠又全面的零食基地呢?C++ 本身作为一门篇底层的一种语言,世面的免费课程大多都没有教明白。所以本篇专栏的内容全是干货让大家从底层了解C++,把更多的知识由抽象到简单通俗易懂。

⛳️ 推荐

前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。点击跳转到网站。

文章目录

  • 引入
  • ⛳️ 推荐
  • 一、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 函数重载概念
  • 四、推荐图书
      • 4.1 作者推荐
      • 4.2 图书目录
  • 购买链接
  • 五、粉丝福利
  • 📝文章结语:

一、C++的输入输出

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

1.1 cout 输出函数

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

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

🍸 代码演示:

#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语言中 << 左移操作符 >> 右移动操作符

🍸 代码演示:

#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类型的对象,需要我们搭配流提取操作符一起使用:

🍸 代码演示:

#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 缺省函数的概念

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

🍸 代码演示:

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

2.2 缺省函数的分类

2.2.1 全缺省函数

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

🍸 代码演示:

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 半缺省函数

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

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

📑 错误展示:

void fun(int a = 10, int x , int y = 10)
{

}

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

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

🍸 代码演示:

void Func(int a, int b = 10, int c = 20)
 {
     cout<<"a = "<<a<<endl;
     cout<<"b = "<<b<<endl;
     cout<<"c = "<<c<<endl;
 }

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

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

🍸 代码演示:

#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++中,只要函数名相同,函数参数不同就可以构成重载

  • 🌱 函数参数类型不同
#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);
}
  • 🌱 函数个数不同
#include<iostream>
using namespace std;
// 2、参数个数不同
void f()
{
	cout << "f()" << endl;
}
void f(int a)

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

🍸 代码演示:

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

四、推荐图书

4.1 作者推荐

《图解算法:使用C++(视频教学版)》采用C++语言演绎算法思维,帮助读者轻松理解数据结构及其算法的设计,即使是零基础的读者也能快速上手编程。 通过丰富的图例,《图解算法:使用C++(视频教学版)》简明地阐述了算法的基础概念,并提供了实际的例子来进一步说明。同时,强调了程序设计逻辑,以C++语言实现各种算法在程序设计领域的应用。 书中设计了难易适中的习题,可以帮助读者进一步演练和验收学习效果。此外,还提供了精心录制的教学视频,为读者提供更加全面的学习支持。《图解算法:使用C++(视频教学版)》力求化繁为简,即使是编程小白也能轻松读懂。作为一本轻量级的算法书,它是提高程序设计水平、提升个人价值的**投资。

在这里插入图片描述

4.2 图书目录

目    录

第1章  进入算法的世界 1

1.1  计算思维 2

1.1.1  分解 3

1.1.2  模式识别 4

1.1.3  模式概括与抽象 4

1.1.4  算法 5

1.2  计算思维的脑力大赛 6

1.2.1  三分球比赛灯记录器 6

1.2.2  图像字符串编码 7

1.2.3  计算机绘图指令实践 7

1.2.4  炸弹超人游戏 8

1.3  生活中处处都存在算法 8

1.3.1  算法的条件 9

1.3.2  时间复杂度O(f(n)) 11

1.4  课后习题 132章  经典算法介绍 14

2.1  分治法 14

2.2  递归法 15

2.3  贪心法 18

2.4  动态规划法 19

2.5  迭代法 21

2.6  枚举法 23

2.7  回溯法 29

2.8  课后习题 353章  常用数据结构 36

3.1  认识数据结构 37

3.2  常见的数据结构 39

3.2.1  数组 39

3.2.2  链表 42

3.2.3  堆栈 43

3.2.4  队列 44

3.3  树结构简介 44

3.3.1  树的基本概念 45

3.3.2  二叉树 46

3.4  图论简介 47

3.5  哈希表 49

3.6  课后习题 504章  排序算法 52

4.1  认识排序 52

4.1.1  排序的分类 53

4.1.2  排序算法分析 53

4.2  冒泡排序法 54

4.3  选择排序法 58

4.4  插入排序法 61

4.5  希尔排序法 63...

购买链接

京东链接: https://item.jd.com/

五、粉丝福利

  • 参与方式:关注博主、点赞收藏评论,任意评论(每人最多评论三次)

  • ⛳️本次送书1~3取决于阅读量,阅读量越多,送的越多

  • 📆 活动时间至:2023-1-28 10:00:00 | 随机抽取由博主动态公布抽奖结果

如有特别需要的同学可添加博主微信进入粉丝福利群发放福利哦!

🔥 注:活动结束后,会私信中奖粉丝的,各位注意查看私信哦!

⛳️ 文章末尾扫码加入粉丝群,不定期发放粉丝福利,各种专业书籍免费赠送

📝文章结语:

☁️ 看到这里了还不给博主扣个:
⛳️ 点赞🍹收藏 ⭐️ 关注
💛 💙 💜 ❤️ 💚💓 💗 💕 💞 💘 💖
拜托拜托这个真的很重要!
你们的点赞就是博主更新最大的动力!

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1409710.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

[leetcode] 18. 四数之和

文章目录 题目描述解题方法排序 双指针java代码 相似题目 题目描述 给你一个由 n 个整数组成的数组 nums &#xff0c;和一个目标值 target 。请你找出并返回满足下述全部条件且不重复的四元组 [nums[a], nums[b], nums[c], nums[d]] &#xff08;若两个四元组元素一一对应&a…

《解锁R统计分析:深度探索R Commander图形界面》

&#x1f482; 个人网站:【 海拥】【神级代码资源网站】【办公神器】&#x1f91f; 基于Web端打造的&#xff1a;&#x1f449;轻量化工具创作平台&#x1f485; 想寻找共同学习交流的小伙伴&#xff0c;请点击【全栈技术交流群】 在数据科学与大数据技术的浪潮中&#xff0c;R…

Python爬取猫眼电影专业评分数据中的应用案例

在数据分析和可视化展示中&#xff0c;获取准确的电影专业评分数据至关重要。猫眼电影作为中国领先的电影信息与票务平台&#xff0c;其专业评分对于电影行业和影迷的数据来说具有重要意义。通过Python爬虫技术&#xff0c;我们可以实现从猫眼电影网站上自动获取这些数据目标。…

go swagger怎么玩(使用swagger为go项目生成python的SDK)

异常详细&#xff01;所到之处&#xff0c;问题全量解决、你值得拥有&#xff01; 目录 go方面需要做的准备&#xff08;步骤代码&#xff09; 生成对应语言的SDK 生成后怎么调用验证 提示&#xff1a;生成哪种语言的SDK只是本文的其中一步&#xff0c;具体哪种语言可以选择…

数字图像处理(实践篇)二十七 Python-OpenCV 滑动条的使用

目录 1 涉及的函数 2 实践 1 涉及的函数 ⒈ setWindowProperty()用于设置GUI应用程序的属性 cv2.setWindowProperty(windowsName, prop_id, prop_value) 参数: ①

Oracle篇—分区表的管理(第二篇,总共五篇)

☘️博主介绍☘️&#xff1a; ✨又是一天没白过&#xff0c;我是奈斯&#xff0c;DBA一名✨ ✌✌️擅长Oracle、MySQL、SQLserver、Linux&#xff0c;也在积极的扩展IT方向的其他知识面✌✌️ ❣️❣️❣️大佬们都喜欢静静的看文章&#xff0c;并且也会默默的点赞收藏加关注❣…

Wordpress seo优化该怎么做?

Wordpress作为开源管理系统&#xff0c;目前已然是世界上最流行的cms之一&#xff0c;这不仅仅因为他开源&#xff0c;对用户友好&#xff0c;让任何人都能轻而易举的制作网站&#xff0c;更是因为这套程序对于搜索引擎非常友好&#xff0c;是做谷歌seo的不二之选 Wordpress作为…

消息队列RabbitMQ.03.死信交换机的讲解与使用

目录 一、死信队列(延迟队列) 概念讲解 二、确认消息&#xff08;局部方法处理消息&#xff09; 三、代码实战 1.编写生产者代码&#xff0c;配置消息、直连交换机、路由键 1.1代码解析&#xff1a; 2.配置消费者接受类接受直连交换机的路由键 2.1. String msg&#xff…

nsenter比docker exec更底层的命令

文章目录 nsenter介绍安装方法简单使用 nsenter介绍 nsenter命令是一个可以在指定进程的命令空间下运行指定程序的命令。它位于util-linux包中。典型的用途就是进入容器的网络命令空间。相当多的容器为了轻量级&#xff0c;是不包含较为基础的命令的&#xff0c;比如说ip addr…

响应式Web开发项目教程(HTML5+CSS3+Bootstrap)第2版 例4-7 datalist

代码 <!doctype html> <html> <head> <meta charset"utf-8"> <title>datalist</title> </head><body> <input id"address" list"addressList"> <datalist id"addressList"…

【数据结构】 链队列的基本操作 (C语言版)

目录 一、链队列 1、链栈的定义&#xff1a; 2、链栈的优缺点&#xff1a; 二、链队列的基本操作算法&#xff08;C语言&#xff09; 1、宏定义 2、创建结构体 3、链栈的初始化 4、链队列的入队 5、链队列的出队 6、取链队列的对头元素 7、链队列的销毁 8、链…

4.列表选择弹窗(CenterListPopup)

愿你出走半生,归来仍是少年&#xff01; 环境&#xff1a;.NET 7、MAUI 在屏幕中间弹窗的列表选择弹窗。 1.布局 <?xml version"1.0" encoding"utf-8" ?> <toolkit:Popup xmlns"http://schemas.microsoft.com/dotnet/2021/maui"x…

【AIGC】Diffusers:扩散模型的开发手册说明2

前言 扩散器被设计成一个用户友好且灵活的工具箱&#xff0c;用于构建适合您用例的扩散系统。工具箱的核心是模型和调度程序。然而 DiffusionPipeline 为方便起见将这些组件捆绑在一起&#xff0c;但您也可以解包管道并分别使用模型和调度程序来创建新的扩散系统。 解构 Stab…

uniapp组件库Modal 模态框 的使用方法

目录 #平台差异说明 #基本使用 #传入富文本内容 #异步关闭 #点击遮罩关闭 #控制模态框宽度 #自定义样式 #缩放效果 #API #Props #Event #Method #Slots 弹出模态框&#xff0c;常用于消息提示、消息确认、在当前页面内完成特定的交互操作。 #平台差异说明 AppH5微…

gin如何实现热更新

什么是热更新&#xff1f; 一种不需要用户关闭应用或重新启动设备就能进行的软件更新技术。它可以快速地在线修复或升级应用程序的错误或功能&#xff0c;从而减少用户的等待时间并提高用户体验。 如何优雅停止服务&#xff1f; Go 1.8版本之后&#xff0c; http.Server 内置…

CentOS使用

1.使用SSH连接操作虚拟机中的CentOS 使用代理软件(MobaX/Xshell)通过ssh连接vmware中的虚拟机,可以摆脱vmware笨重的软件,直接在代理软件中进行操作. 包括使用云虚拟器,其实也只是在本地通过ssh连接别处的云服务商的硬件而已. 1.1 配置静态IP 为什么要配置静态IP? 想要使用…

构建高可用消息队列系统 01

构建高可用消息队列系统 01 引言1. RabbitMQ简介介绍1.1 什么是RabbitMQ1.2 RabbitMQ的核心特性1.3 RabbitMQ与AMQP 2.安装RabbitMQ3.消息队列实践总结 引言 在当今互联网时代&#xff0c;消息队列系统扮演着至关重要的角色&#xff0c;它们被广泛应用于分布式系统、微服务架构…

Linux编辑器vim(含vim的配置)

文章目录 前言vim的基本概念vim基本操作进入vim模式切换退出vim vim指令vim命令模式指令vim底行模式命令 简单vim配置 前言 本篇文章&#xff0c;小编将介绍Linux编辑器–>vim以及vim的配置。 vim的基本概念 正常/普通/命令模式(Normal mode) 控制屏幕光标的移动&#xf…

年夜饭都吃什么菜?年夜饭菜谱保存到手机便签更便捷

农历除夕&#xff0c;是我国一年中最为重要的传统节日之一&#xff0c;而在这一天&#xff0c;全家团圆共进年夜饭是一种重要的仪式感。然而&#xff0c;随着现代生活的繁忙&#xff0c;很多人都在为年夜饭吃什么菜而发愁。年夜饭是一顿团圆、美好的大餐&#xff0c;选择一些好…

基于非缓冲区文件操作(实现cp的功能)

打开文件 -- open open(const char *pathname, int flags); open(const char *pathname, int flags, mode_t mode); 形参&#xff1a; pathname -- 文件的路径 flags&#xff1a;下面的宏定义必须选择一个 O_RDONLY -- 只读 O_WRONLY -- 只写 O_RDWR --…