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


在这里插入图片描述

🎬 鸽芷咕:个人主页

 🔥 个人专栏: 《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章  进入算法的世界 11.1  计算思维 21.1.1  分解 31.1.2  模式识别 41.1.3  模式概括与抽象 41.1.4  算法 51.2  计算思维的脑力大赛 61.2.1  三分球比赛灯记录器 61.2.2  图像字符串编码 71.2.3  计算机绘图指令实践 71.2.4  炸弹超人游戏 81.3  生活中处处都存在算法 81.3.1  算法的条件 91.3.2  时间复杂度O(f(n)) 111.4  课后习题 132章  经典算法介绍 142.1  分治法 142.2  递归法 152.3  贪心法 182.4  动态规划法 192.5  迭代法 212.6  枚举法 232.7  回溯法 292.8  课后习题 353章  常用数据结构 363.1  认识数据结构 373.2  常见的数据结构 393.2.1  数组 393.2.2  链表 423.2.3  堆栈 433.2.4  队列 443.3  树结构简介 443.3.1  树的基本概念 453.3.2  二叉树 463.4  图论简介 473.5  哈希表 493.6  课后习题 504章  排序算法 524.1  认识排序 524.1.1  排序的分类 534.1.2  排序算法分析 534.2  冒泡排序法 544.3  选择排序法 584.4  插入排序法 614.5  希尔排序法 63...

购买链接

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

五、粉丝福利

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

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

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

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

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

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

📝文章结语:

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

在这里插入图片描述

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

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

相关文章

【pyqt6】用pyqt做一个点菜小程序

用pyqt做一个点菜小程序 前言1.pyqt62. 功能介绍3.程序实现 前言 在本文中&#xff0c;我们将使用 PyQt6&#xff08;Python的GUI库&#xff09;创建一个简单的点菜小程序。该程序允许用户从菜单中选择菜品&#xff0c;将其添加到订单中&#xff0c;并通过点击“下单”按钮查看…

Pandas ------ 向 Excel 文件中写入含有合并表头的数据

Pandas ------ 向 Excel 文件中写入含有合并表头的数据 推荐阅读引言正文 推荐阅读 Pandas ------ 向 Excel 文件中写入含有 multi-index 和 Multi-column 表头的数据 引言 这里给大家介绍一下如何向 Excel 中写入带有合并表头的数据。 正文 import pandas as pddf1 pd.D…

嵌入式操作系统分类和任务管理

目录 嵌入式操作系统分类 1、按软件结构分类 任务管理 1、多道程序 2、进程 3、线程 4、任务 嵌入式操作系统分类 1、按软件结构分类 按照软件的体系结构&#xff0c;可以把嵌入式操作系统分为三大类:单体结构、分层结构和微内核结构。它们之间的差别主要表现在两个方面…

DL专栏—笔记目录

前言&#xff1a; &#x1f60a;&#x1f60a;&#x1f60a;欢迎来到本博客&#x1f60a;&#x1f60a;&#x1f60a; &#x1f31f;&#x1f31f;&#x1f31f; 本专栏主要是记录工作中、学习中关于AI(Deep Learning)相关知识并分享。 &#x1f60a;&#x1f60a;&#x1f…

电脑自动开机播放PPT的解决方案

客户有个需求&#xff0c;要求与LED大屏幕连接的电脑定时自动播放PPT。为了安全电脑在不播放的时段&#xff0c;必须关机。 目录 1、使用“时控插座”并进行设置 2、戴尔电脑BIOS设置&#xff08;上电开机&#xff09; 3、设置Windows自动登录 4、任务计划设置 5、启动Au…

一个响指,代码生成!华为云CodeArts Snap正式公测

月初&#xff0c;华为云CodeArts Snap正式开启公测&#xff0c;这是一款基于华为云研发大模型的智能化编程助手&#xff0c;旨在为开发者提供高效且智能的编程体验&#xff0c;提升研发人员的单兵作战能力。 如今&#xff0c;生成式AI爆发式增长&#xff0c;大模型商用节奏加快…

Java面试题SPI

Java面试题SPI 文章目录 Java面试题SPISPI何谓 SPI?SPI 和 API 有什么区别&#xff1f;SPI 的优缺点&#xff1f; 文章来自Java Guide 用于学习如有侵权&#xff0c;立即删除 SPI 关于 SPI 的详细解读&#xff0c;请看这篇文章 Java SPI 机制详解 。 何谓 SPI? SPI 即 Ser…

Excel:将截面数据转换成面板数据

原始截面数据如下&#xff1a; 步骤&#xff1a;数据——自表格/区域 点击确定&#xff0c;出现下图&#xff1a; 然后&#xff0c;在这个界面选择&#xff1a;“转换”——“逆透视列”下选择逆透视其他列。会出现面板数据形式。 然后&#xff0c;点击“主页”——关闭并上载即…

金融OCR领域实习日志(一)——OCR技术从0到1全面调研

一、OCR基础 任务要求&#xff1a; 工作原理 OCR&#xff08;Optical Character Recognition&#xff0c;光学字符识别&#xff09;是指电子设备&#xff08;例如扫描仪或数码相&#xff09;检查纸上打印的字符&#xff0c;经过检测暗、亮的模式肯定其形状&#xff0c;而后用…

2024年,这个铁饭碗一定不要错过!

说到铁饭碗这个话题&#xff0c;你会想到什么职业&#xff1f;有的人可能会想到公务员、老师、医生&#xff0c;有的人会想到企业家。 其实每个人对于铁饭碗的定义都不同&#xff0c;为什么父辈的人觉得只要当了公职人员就是可以吃一辈子的铁饭碗&#xff1f;因为他们生活中接触…

婴儿营养之道:新生儿补充蛋白质的关键

引言&#xff1a; 蛋白质是新生儿生长发育所必需的重要营养物质&#xff0c;对于肌肉、组织和免疫系统的发展至关重要。在新生儿期间&#xff0c;适量的蛋白质摄入有助于建立健康的身体基础&#xff0c;但在补充时需谨慎选择和控制。本文将深入探讨蛋白质的作用、补充时机&…

容器安全工具

容器安全工具是用于保护和监控容器环境安全的工具。它们提供了一系列功能,包括容器镜像的漏洞扫描、运行时监控、事件日志记录、访问控制、运行权限管理等。以下是一些常见的容器安全工具: 1. Docker Bench Security:用于检查Docker环境配置的安全性,提供一些最佳实践建议…

Hadoop基本概论

目录 一、大数据概论 1.大数据的概念 2.大数据的特点 3.大数据应用场景 二、Hadoop概述 1.Hadoop定义 2.Hadoop发展历史 3.Hadoop发行版本 4.Hadoop优势 5.Hadoop1.x/2.x/3.x 6.HDFS架构 7.Yarn架构 8.MapReduce架构 9.大数据技术生态体系 一、大数据概论 1.大数…

GitLab入门指南:上传与下载操作一网打尽

GitLab简介&#xff1a; GitLab是一个基于Git的开源仓库管理系统&#xff0c;提供了一个Web界面的Git存储库管理器&#xff0c;并集成了多种开发工具的功能&#xff0c;如代码审查、问题跟踪、持续集成和持续部署等。GitLab可以在本地服务器上部署&#xff0c;也可以使用其提供…

单核QPS近6000S,陌陌基于OceanBase的持久化缓存探索与实践

挚文集团于 2011 年 8 月推出了陌陌&#xff0c;这款立足地理位置服务的开放式移动视频社交应用在中国社交平台领域内独树一帜。陌陌和探探作为陌生人社交领域的主流应用&#xff0c;涵盖了多种核心业务模块&#xff0c;包括直播服务、附近动态功能、即时通讯&#xff08;IM&am…

计算机网络 第4章(网络层)

系列文章目录 计算机网络 第1章&#xff08;概述&#xff09; 计算机网络 第2章&#xff08;物理层&#xff09; 计算机网络 第3章&#xff08;数据链路层&#xff09; 计算机网络 第4章&#xff08;网络层&#xff09; 文章目录 系列文章目录1. 概述1.1 简介1.2 总结 2. 网络…

大数据信用查询系统能查到什么呢?

在金融助贷行业&#xff0c;大数据有叫大数据信用或者网贷大数据&#xff0c;在申贷的时候&#xff0c;想必大多数人都有听说过&#xff0c;很多人因为大数据不良的原因申贷被拒过&#xff0c;那大数据信用查询系统能查到什么呢?本文就简单为大家总结几点大数据信用查询的内容…

JavaEE之多线程编程:5. 死锁(详解!!!)

文章目录 一、死锁是什么二、关于死锁的三种形式三、如何避免死锁 一、死锁是什么 死锁是这样的一种情形&#xff1a;多个同时被阻塞&#xff0c;它们中的一个或者全部都在等待某个资源被释放。由于线程被无限期地阻塞&#xff0c;因此程序不可能正常终止。 【举个例子理解死…

Netty Reactor 模式解析

目录 Reactor 模式 具体流程 配置 初始化 NioEventLoop ServerBootstrapAcceptor 分发 Reactor 模式 在刚学 Netty 的时候&#xff0c;我们肯定都很熟悉下面这张图&#xff0c;它就是单Reactor多线程模型。 在写Netty 服务端代码的时候&#xff0c;下面…

如何使用docker实现越权漏洞-webug靶场搭建(超详解)

越权漏洞-webug靶场搭建 1.打开docker systemctl start docker 2.查找webug docker search webug 3.拉取docker.io/area39/webug 镜像 docker pull docker.io/area39/webug 4.查看镜像 docker images 5.创建容器 docker run -d -p 8080:80 --name webug docker.io/area39/we…