C++入门基础(1)

news2024/10/3 6:33:27

因为6月中旬学校事情多,许久未更新,让我们继续学习吧!

目录

前言:

 一、命名空间:

 1、定义:

 2、使用:

 3、访问命名空间域:

二、C++输入、输出函数:

1、输入函数:

2、输出函数:

3、升级的地方:

 三、缺省参数:

定义:

使用: 

四、重载函数: 

 1、参数类型不同:

2、参数个数不同:

3、不同类型的参数的顺序不同 :

4、注意:

1.返回类型不同不是重载函数

2.带有缺省参数的重载函数有歧义:

五、总结

前言:

毕竟是想吃c++这一碗饭,当然得认识一下,我们C++的祖师爷——本贾尼

✨✨ 发展历史:

 一、命名空间:

        ✨在C/C++中,变量、函数和后⾯要学到的类都是⼤量存在的,这些变量、函数和类的名称将都存在于全 局作⽤域中,可能会导致很多冲突。使⽤命名空间的⽬的对标识符的名称进⾏本地化,以避免命名 冲突或名字污染namespace关键字的出现就是针对这种问题的。c语⾔项⽬类似下⾯程序这样的命名冲突是普遍存在的问题,而C++引入了namespace关键字就是为了更好的解决这个问题✨✨

 域: 全局域局部域 和 命名空间域

 1、定义:

        👉namespace的作用就是定义一个作用域出来,这个域跟全局域各⾃独⽴不同的域可以定义同名变量

 有点类似结构体关键字 域名 就是一个我们命名的空间,后面接一个 {} 里面相当于域内成员(命名空间成员)域名可以任取!!

注意3个点:✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨ 

  1. 在花括号结尾处不要加分号;
  2. 改命名域只能在全局的位置定义,不能写在局部;但是它可以再里面继续嵌套命名空间域;
  3. 域影响的是编译时语法查找⼀个变量/函数/ 类型出处(声明或定义)的逻辑,所有有了域隔离,名字冲突就解决了。局部域和全局域除了会影响 编译查找逻辑,还会影响变量的声明周期,命名空间域和类域不影响变量声明周期。

✨ 项⽬⼯程中多⽂件中定义的同名namespace会认为是⼀个namespace,不会冲突。此时编译器报错,因为同一域下是不能出现同名变量的


 2、使用:

      👉  编译查找⼀个变量的声明/定义时,默认只会在局部或者全局查找,不会到命名空间⾥⾯去查找。所以 下⾯程序会编译报错。所以我们要使⽤命名空间中定义的变量/函数。🐸🐸

由于命名空间是一个域,想要在其外部使用其中一个变量等内容,就需要像结构体那样,需要一个操作符来调用它!!

域作用域限定符 ::    也就是2个冒号

当然了,也可以通过这个调用全局变量,当改限定符前面没有任何域名,即空的时候就是调用全局变量

 3、访问命名空间域:

分为3种方法:

1、直接单个进行访问(指定命名空间访问):就是前面提到的 域名::成员名 单独一个一个来进行访问,是最安全的的使用方法,项目中推荐这种方法

2、单个展开:using将命名空间中某个成员展开,项⽬中经常访问的,不存在冲突的成员推荐这种⽅式;展开后相当于给他放到全局了,不要去频繁使用    ::

 展开方式如下:using后面告诉它我们要展开谁

3、全展开:using将命名空间全部成员展开,项目不推荐,冲突危险大,但是日常练习推荐使用,方便;

展开方式如下:告诉的using的我们要展开的是一个 命名空间域


二、C++输入、输出函数:

在c语言中经常用到的输入输出语句,scanf,printf,当然,c++兼容大部分c的语法,所以也能用,在有些时候,用c++很麻烦的时候,可以用c的一些语法来替代;当然C++的输入输出也是有的:cin/cout

就像C语言有自己的标准输入输出的库一样,C++也有自己的库———->>   <iostream>

✨✨<iostream>是Input Output Stream 的缩写,是标准的输⼊、输出流库,定义了标准的输⼊、输 出对象✨这里说明一下:该库包含了stdio.h的内容,可以直接通过该库使用printf和scanf

声明一下: 

        👉C++标准库都放在⼀个叫std(standard)的命名空间中,所以要 通过命名空间的使⽤⽅式去⽤他们;

当我们要使用他们时就需要像调用域名的成员一样 std::成员名

但是一般我们平时写代码就是 用到了👉全展开


1、输入函数:

cin其实就是input前面2个单词然后前面加个c

使用输入函数需要用到一个 >> 流提起操作符

当然这里的提取也可以提取多个,但是需要注意的时该操作符只能对一个操作数,所以要这么写


2、输出函数:

cout就是output前面的3个单词前面加一个c

使用输出函数需要用到一个 << 流插入操作符

这里可以也是一样的一个操作符对应一个操作数,可以插入多个

✨和C语言一样,没有换行,需要我们自己取手动加一个

✨endl 这个是一个函数,相当于 \n的作用,这里刚刚学习,不要深究,这么理解即可

✨<<可以写字符串,也可以写字符,都行,但是注意>>只能对应一个操作数

3、升级的地方:

        ✨✨不需要像printf/scanf输⼊输出时那样,需要⼿动指定格式,C++的输⼊ 输出可以⾃动识别变量类型(本质是通过函数重载实现的,这个以后会讲到),其实最重要的是 C++的流能更好的⽀持⾃定义类型对象的输⼊输出。✨✨

值得注意的是没有了格式化,就无法控制数据的精度 

 但是C++兼容大部分C的语法,所以我们可以通过printf来控制其精度;


 三、缺省参数:

定义

缺省参数声明定义函数为函数的参数指定⼀个缺省值。👉在调⽤该函数时,如果没有指定实参则采⽤该形参的缺省值,否则使⽤指定的实参,缺省参数分为全缺省半缺省参数。(有些地⽅把缺省参数也叫默认参数)

 👉全缺省参数:全部参数都给一个缺省值

 半缺省参数:部分参数给定了一个缺省值;C++规定了,部分缺省参数必须从右向左缺省(从函数最右边参数开始缺省),不能跳跃缺省。

✨若不是从右向左,就会报错

使用: 

        ✨缺省参数的出现,让我们可以对于有缺省值的形参,能够不进行传参;而当我们不传参时,👉该形参就会使用自己的缺省值进行函数的实现✨

当然了,对于含有缺省参数的函数传参是,从左向右传实参的。我们发现:如果不给形参b传参,我们得到得a+b,就是传过去得实参a的值 + 形参中b的缺省值


四、重载函数: 

        ✨C++⽀持在同⼀作⽤域出现同名函数,但是要求这些同名函数的形参不同,可以是参数个数不同或者类型不同。这样C++函数调⽤就表现出了多态⾏为,使⽤更灵活。反观:C语⾔是不⽀持同⼀作⽤域中出现同名函数的✨

👉在我们之前写加法函数时,C语言中,写了一个函数,就不能再出现重名了。为了方便,让一个函数名可以对多种类型数据进行加法,C++就允许了重载函数的出现🧑‍🎓

 1、参数类型不同:

✨ 传的参数类型不同,编译器会识别你的传参类型选择相匹配的那个函数;👉如下:

2、参数个数不同:

✨根据你传参的个数来判断使用哪一个函数🧑‍🎓

3、不同类型的参数的顺序不同 :

✨前提是里面必须是含有不同类型的参数才能有顺序不同的说法!!如果2个形参都是int 交换位置和不换位置都是一样的,这个就没有顺序不同之说✨

4、注意:

1.返回类型不同不是重载函数

✨看见红线了么,就是告诉你发生错误,不同的返回类型(返回值不同)编译器调用时,还是不知道调用谁。✨

2.带有缺省参数的重载函数有歧义:

✨这里不会报错,因为这个算的上时重载函数,但是值得注意的是,这是个有歧义的重载,编译器调用时会发生不知道调谁的情况,因为缺省参数也可以不传参,所以导致调用不传参的fcc()时,编译器不明白到底该调用哪个函数!🤔如果只调用fcc(a)就不会报错,那么这里用函数重载也没意义🧑‍🎓🧑‍🎓我们和计算机进行交流一定要明确清晰!!

👉👉不推荐缺省参数和重载函数一起使用!!!

五、总结:

暑假也要好好学习哦!!

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

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

相关文章

vue3源码(六)渲染原理-runtime-core

1.依赖关系 runtime-dom 依赖于runtime-core,runtime-core 依赖于reactivity和sharedruntime-core提供跨平台的渲染方法createRenderer&#xff0c;用户可以自己传递节点渲染的渲染方法renderOptions&#xff0c;本身不关心用户使用什么APIruntime-dom提供了为浏览器而生的渲染…

关闭这八个电脑设置,保护个人隐私

你知道吗&#xff1f;电脑可能一直在偷窥你的小秘密。朋友们&#xff0c;一定要记得关闭这8个电脑设置哦&#xff0c;这样可以有效地保护我们的个人隐私。 按住键盘Windows键加i键&#xff0c;快速打开Windows设置。然后点击隐私选项。 我们来看基本的常规设置。里面有四个设置…

关于put提交不了参数的解决办法

html中form表单只支持GET与POST请求&#xff0c;而DELETE、PUT等method并不支持&#xff0c; 如图所示 参数请求改成RequestBody&#xff0c;用json格式传参即可解决问题

资料分析笔记整理

提升技巧多做题、少动笔、多分析 资料分析认识 国考一般20题(24~28分钟) 统计材料的类型包括单纯的文字、表格、图形以及由这些元素组成的复合类型材料 文字性材料:(30~60秒) 多段落型文字材料(时间、关键词、结构) 孤立段落文字材料(时间、关键词、标点[。;]) 表…

数据挖掘——matplotlib

matplotlib概述 Mat指的是Matlab&#xff0c;plot指的是画图&#xff0c;lib即library&#xff0c;顾名思义&#xff0c;matplotlib是python专门用于开发2D图表的第三方库&#xff0c;使用之前需要下载该库&#xff0c;使用pip命令即可下载。 pip install matplotlib1、matpl…

Idea使用EasyApi插件自动生成接口文档到Yapi

1.安装EasyApi插件 2.配置Yapi 设置-》EasyApi Yapi的Server 配置为Yari项目的地址 tokens&#xff1a;项目名Yapi项目里面的token&#xff1a;例如&#xff1a;test-project0e6cfb3c22c884a0fce108fffe554a20ca12341e421d7201233143ee440af36b mytest-portal0e6cfb3c22c884a…

关于Qt模型插入最后一行数据中存在未填满的项,点击导致崩溃的解决办法

在使用Qt模型视图框架的时候&#xff0c;你可能会遇见这种情况&#xff1a;给QTableView设置设置模型的时候&#xff0c;网模型里面插入数据&#xff0c;因为数据是一行一行插入的&#xff0c;即要使用model的appandRow函数&#xff0c;但有时候最后一行数据没有填满一行&#…

Temu是什么?Temu自养号测评有什么优势?

一、 Temu是什么&#xff1f;Temu是拼多多于海外线的跨境电商平台&#xff0c;“Temu”这个名字的含义也和拼多多的意思相近。Temu跨境电商自上线以来&#xff0c;下载量不断攀升&#xff0c;发展势头一片大好&#xff0c;击穿地板价的商品在欧美市场掀起了一阵狂潮&#xff0c…

html H5 dialog弹窗学习,实现弹窗显示内容 替代confirm、alert

html H5 dialog弹窗学习,实现弹窗内容 替代confirm 框架使用的mui,使用mui.confirm() 弹窗内容过多时,弹窗被撑的到屏幕外去了,使用H5 dialog 标签自定义一个固定大小的弹窗,内容过多时可下拉显示 效果展示 隐私政策内容很多,可以下拉显示 代码 myDialog.css dialog{p…

Java虚拟机面试题汇总

目录 1. JVM的主要组成部分及其作用&#xff1f; 1.1 运行时数据区划分&#xff1f; 1.2 哪些区域可能会发生OOM&#xff1f; 1.3 堆和栈的区别&#xff1f; 1.4 内存模型中的happen-before是什么&#xff1f; 2. HotSpot虚拟机对象创建流程&#xff1f; 2.1 类加载过程…

Xilinx zc706 USB电路解析

作者 QQ群&#xff1a;852283276 微信&#xff1a;arm80x86 微信公众号&#xff1a;青儿创客基地 B站&#xff1a;主页 https://space.bilibili.com/208826118 参考 USB OTG检测原理 USB3320 USB_ID为低电平时候&#xff0c;为host模式&#xff0c;USB_ID为悬空&#xff08;高…

如何快速实现一个无缝轮播效果

&#x1f9d1;‍&#x1f4bb; 写在开头 点赞 收藏 学会&#x1f923;&#x1f923;&#x1f923; 需求简介 轮播图是我们前端开发中的一个常见需求&#xff0c;在项目开发中&#xff0c;我们可以使用element、ant等UI库实现。某些场景&#xff0c;为了一个简单的功能安装一…

数据结构作业/2024/7/9

2>实现双向循环链表的创建、判空、尾插、遍历、尾删、销毁 fun.c #include "head.h" //1.双向循环链表的创建 doubleloop_ptr create_list() …

面经-计算机网络-数据结构-堆

1.什么是堆 堆是一种满足以下条件的树&#xff1a; 堆中的每一个节点值都大于等于&#xff08;或小于等于&#xff09;子树中所有节点的值。或者说&#xff0c;任意一个节点的值都大于等于&#xff08;或小于等于&#xff09;所有子节点的值。 2.堆的用途 当我们只关心所有数…

Raylib 实现超大地图放大缩小与两种模式瓦片地图刷新

原理&#xff1a; 一种刷新模式&#xff1a; 在宫格内整体刷新&#xff0c;类似九宫格移动到边缘&#xff0c;则九宫格整体平移一个宫格&#xff0c;不过这里是移动一个瓦片像素&#xff0c;实际上就是全屏刷新&#xff0c;这个上限是 笔记本 3060 70帧 100*100个瓦片每帧都…

16:9横屏短视频素材库有哪些?横屏短视频素材网站分享

在这个视觉内容至关重要的时代&#xff0c;16:9横屏视频因其宽广的画面和优越的观赏体验&#xff0c;已经成为无数创作者和营销专家的首选格式。但要创造出吸引人的横屏视频&#xff0c;高质量的视频素材库是不可或缺的。不管你是资深视频制作人还是刚入行的新手&#xff0c;下…

香橙派编译linux内核支持ebpf和虚拟WIFI

前言 上一篇文章香橙派5plus上跑云手机方案一 redroid(带硬件加速)中说了怎么运行redroid&#xff0c;这篇补一下怎么修改参数编译内核。 补充 上篇文章有个内容需要补充一下&#xff1a;更新完内核需要用下面的命令防止内核被apt更新&#xff0c;不然后面使用apt update又回…

空间计量模型及 Stata 具体操作步骤

目录 一、引言 二、空间计量模型理论原理 空间自回归模型&#xff08;SAR&#xff09;&#xff1a; 空间误差模型&#xff08;SEM&#xff09;&#xff1a;&#xff0c; 空间杜宾模型&#xff08;SDM&#xff09;&#xff1a; 三、实证模型构建 四、数据准备 五、Stata …

怎么将几首音乐合并在一起?这四种合并方法大家都在用!

怎么将几首音乐合并在一起&#xff1f;在音乐的海洋中遨游时&#xff0c;我们是否曾被音乐的海洋所淹没&#xff1f;在享受旋律的流转中&#xff0c;我们是否频繁地在不同的曲目间穿梭&#xff0c;仿佛迷失在无尽的音符之中&#xff1f;但音乐数量的繁多&#xff0c;不仅带来了…

VMware vSAN替换存储解决方案如何选择?

What is vSAN &#xff1f; 是一款软件定义的企业存储解决方案&#xff0c;支持超融合基础架构系统。vSAN与VMware vSphere 完全集成在一起&#xff0c;作为ESXi Hypervisor内的分布式软件层&#xff0c;通过整合、池化ESXi各个主机上的存储资源&#xff0c;为vSphere虚拟化平…