初始 c++(1)

news2024/12/24 10:15:21

  目录:

   

目录

        1: 命名空间的详解

        2:c++的输入与输出关键字及理解

        3:详细讲解第一个c++程序(每段代码的意思)

        4:缺省参数的理解

        5:函数重载      


   引言:从今天开始我们就开始学习c++了,让我们一起开始新的知识吧!

1:命名空间

            所谓的命名空间从本质上来说,就是开辟了一块空间这块空间需要我们使用特定的形式才能对这一块空间进行访问,存在这块命名空间里的变量从本质上来说也是全局变量。

       那么为什么要存在命名空间呢?

        因为在我们写c语言程序的时候,我们的头文件在预处理阶段需要将他的头文件给展开,有时候我们在给变量或者函数起名字的时候,起出来的名字可能与标准库中的函数名或变量起名字冲突,所以我们才引入了命名空间。

        因此从上面我们不难发现命名空间的目的:防止我们给变量或函数起的名字与标准库中的名字起冲突,简单的来说就是防止命名冲突。

        命名空间的定义

        语法:(命名空间关键字)namespace    命名空间名(可以随机取){    ...........(自己定义的变量或者函数) }   这样讲可能还是有点抽象,我们通过图来进行讲解-->

        

      命名空间其实也可以嵌套          

      如下图:

        

关于命名空间我们还需要额外知道的知识点就是

        当我们在同一个工程中建立不同的源文件的时候,这些源文件最终会合并成一个文件,当不同源文件中命名空间名相同的时候,这些命名空间会合并成同一个命名空间中。

什么意思呢?我们通过下面的例子来讲解

        

我们需要注意的是:一个命名空间相当于一个作用域,空间中的内容仅限于在该作用域中。

       命名空间的使用

        在讲解完命名空间之后我们就必须来讲解该如何使用命名空间了。

        这里讲解三种命名空间的使用方法

        1:全部展开命名空间   语法:using namespace 名字;

         这里我们就得使用一个关键字using(展开命名空间所需要的关键字),通过下图列子来使用

例子中的ccg就是我们之前所定义的命名空间,我们可以全部展开意味着我们的命名空间完全进行暴露,有时候可能会有危险。

        缺点:会将命名空间全部暴露,可能会有命名冲突,所以一般在工程中这中展开方式是很少见的。

    

        2: 指定展开部分的命名空间  (using  命名空间名 :: 需要使用内容)

        这种展开方式,有利于当我们经常使用命名空间的一个内容的时候  

        在使用这个之前我们还得来讲解一下一个作用符    ::(它的名字叫做域作用限定符)

        因为我们呢前面讲过我们的命名空间,其实相当于开辟了一块空间(作用域),需要我们经过特定的方式才能使用这块空间。如:

        

        部分展开较完全展开安全性高,只需要展开我们需要使用的东西就行,将经常使用的内容可以进行部分展开。

       3:不需要展开,直接使用域作用限定符,来使用相应的东西

        语法:命名空间名 :: 使用内容

         

 这种直接进入某个空间然后进行使用相关的内容是我们经常在工程中使用的最常见的方法,避免了发生命名冲突,但是一般再练习的时候,我们经常会将c++标准命名空间std给完全展开,因为我们只是一个人在用一个工程文件。

2:c++中的输入与输出  

       关键字: 输入cout   换行:endl       输出  cin   

       当输出在使用的时候我们不得不介绍另外一种操作符  << 流插入运算符  配合着cout(相当于printf)来使用

       当我们使用输入(cin)的时候我们需要介绍 >> 流提取运算符   配合 cin(相当于scanf)来使用

 那么我们如何理解 <<流插入运算符呢与>>流提取运算符呢?

        以博主目前的功力来说,博主可能只能讲出大概的理解,后续会补上详解。。

        首先这里的插入与提取都是相对于console(控制台)来进行操作的,

        我们简单的来说就是,cout<<内容,就是将内容插入到屏幕中去

        cin>> a就是将屏幕中的内容提取到a中去。

       

与c语言不同的是cout,cin还可以自动来识别类型比如说:

特别说明:当我们在使用cout与cin的时候我们必须包含头文件<iostream>,与展开标准命名空间std中的cout与cin。

3:第一个c++程序

        经过前面的知识铺垫后,我们就可以看懂我们的第一个c++程序了,而不是只会使用它,当别人问我们代码意思时我们也可以回答这个问题了。

        


#include<iostream>
using namespace std;

int main()
{

	cout << "Hello World" << endl;
	return 0;
}

很明显通过上面知识的铺垫我们很容易来理解这一个c++程序,并且知其所以然。

4:缺省参数的理解

        概念:当我们在声明或定义一个函数的时候,我们为函数的参数指定一个值,这个值就叫缺省参数,当我们在使用函数的时候,没有传实参的值,那么在使用该变量的时候,它的值就为我们指定的缺省值。

        缺省参数的分类:全缺省参数,部分缺省参数

       1  全缺省参数:就是在调用该函数的时候,一个也没有传实参的值

        比如说:

                 

 2:部分缺省(半缺省)参数

        本来应该叫半缺省的,但是半缺省可能对于小白来说不是很好理解,所以改了个名字。

        半缺省:在调用参数的时候,我们实参传的个数小于形参的个数

 

        从这里我们也不难看出,当我们使用缺省参数的时候,如果我们没有给相应的实参传值,那么这个变量的值,就是该参数的缺省值。

         对于缺省参数我们需要注意的是:

        1:半缺省参数,必须从右向左给缺省值,不能间隔的给。

        原因就是:当我们在调用该函数的时候我们传形参,就会搞混,比如说传2个,那么编译器就认为我们传的是前两个,而不是后面2个。

    2:缺省参数在函数的声明与定义中不能同时出现

        因为编译器怕我们:在声明与定义中给函数的参数,传不同的缺省值。

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

    4:c语言并不支持缺省参数

 

5:函数重载

        定义:函数名相同,函数的参数(类型,个数)不同,那么这两个函数就构成重载。

        在c语言的学习过程中我们知道,c语言中相同函数名存在的时候语法肯定是不支持的,而有一些函数他们的作用相同,只是对于不同的类型进行操作。

        在c语言中我们需要定义两个函数名,而有了重载我们就可以只需要一个函数就可以来完成相同的作用,我们通过例子来讲解函数重载。

        

        函数重载的原理:大概的来说,c++是根据函数的地址来进行相关的使用的。博主在这一块的知识水平可能不是什么很够,在后面肯定会补上。

本章结束,感谢大家的耐心观看!!!

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

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

相关文章

深度学习学习笔记-模型的修改和CRUD

目录 1.打印模型,理解模型结构2.模型保存与加载3.模型的模块CRUD和模块的层的CRUD 1.打印模型,理解模型结构 import torchclass MyModel(torch.nn.Module):def __init__(self):super().__init__()self.layer1 torch.nn.Sequential(torch.nn.Linear(3, 4),torch.nn.Linear(4, …

云计算——网络虚拟化简介

作者简介&#xff1a;一名云计算网络运维人员、每天分享网络与运维的技术与干货。 座右铭&#xff1a;低头赶路&#xff0c;敬事如仪 个人主页&#xff1a;网络豆的主页​​​​​ 目录 前期回顾 前言 一.网络虚拟化 二.网络虚拟化介绍 三.为什么要网络虚拟化 四,网络…

STM32+2.9inch微雪墨水屏(电子纸)实现显示

本篇文章从硬件原理以及嵌入式编程等角度完整的介绍了墨水屏驱动过程&#xff0c;本例涉及的墨水屏为2.9inch e-Paper V2,它采用的是“微胶囊电泳显示”技术进行图像显示&#xff0c;其基本原理是悬浮在液体中的带电纳米粒子受到电场作用而产生迁移&#xff0c;从而改变显示屏各…

【C++初阶】小白入门C++

目录 前言&#xff1a;1、C关键字2、命名空间2.1命名空间是什么2.2为什么要有命名空间2.3命名空间怎么使用2.3.1命名空间的写法2.3.2命名空间是可以嵌套的2.3.3使用命名空间的三种方式 3、C输入和输出3.1初识cout和cin3.2C的输入输出可以自动识别变量类型 4、缺省参数4.1缺省参…

Linux:用户和权限

Linux&#xff1a;用户和权限 1. 认知root用户1.1 root用户&#xff08;超级管理员&#xff09;1.2 su和exit命令1.3 sudo命令1.3.1 为普通用户配置sudo认证 2. 用户、用户组管理2.1 用户组管理2.2 用户管理2.3 getent命令 3. 查看权限控制3.1 认知权限信息3.1.1 案例 4. 修改权…

react 实战- 玩转 react 全家桶(进阶)学习

一个命令是怎么运行起来的? Shell运行一个命令,实际上是运行一个脚本 环境变量 装了node以后,node的路径,就被注册到了环境变量里. 一个js的东西,可以注册? bin Webpack配置 构建 import A from A , const Arequire(A) 为什么可以这么写?为哈都行?本质上,是构建工…

人人自媒体的时候,Ai绘画还值得踏入吗?

前言 先说结论&#xff0c;如果你不打算涉足自媒体&#xff0c;平时也从不上网发什么内容去展示自己的话&#xff0c;其实AI绘画对你来说意义不大。但如果你对自媒体感兴趣&#xff0c;会涉及发作品&#xff0c;发内容&#xff0c;甚至去设计图片&#xff0c;那么AI绘画值得你…

【【萌新的SOC学习之自定义IP核的学习与设计】】

萌新的SOC学习之自定义IP核的学习与设计 本章为了更加深入的了解FPGA的自定义IP和IP封装测试等问题 参考了正点原子 第六讲自定义IP核呼吸灯实验 和 第十九章 IP封装与接口定义实验 为了更好的理解自定义IP核 我们先介绍一个带AXI主从接口的IP核 我们可以展开AXI从接口 下…

Vue--》简易资金管理系统后台项目实战(后端)

今天开始使用 node vue3 ts搭建一个简易资金管理系统的前后端分离项目&#xff0c;因为前后端分离所以会分两个专栏分别讲解前端与后端的实现&#xff0c;后端项目文章讲解可参考&#xff1a;前端链接&#xff0c;我会在前后端的两类专栏的最后一篇文章中会将项目代码开源到我…

转行做程序员,多晚都不晚

大家好啊&#xff0c;我是董董灿。 最近有不少小伙伴加我微信咨询一些问题&#xff0c;有同学想了解AI行业的现状&#xff0c;想着转行的&#xff0c;也有在校生想了解毕业后工作方向的&#xff0c;当然也有想学习编程知识的。 诚惶诚恐&#xff0c;没想到之前写的文章&#…

【CHI】CHI协议,transaction事务汇总

前言 CHI协议最难的是什么&#xff0c;就是那一堆各种各样的事务&#xff0c;你不知道什么场景应该使用什么合适的事务&#xff0c;收到X事务又该回复什么事务。相当于CHI给你制定了很多种&#xff08;尽可能覆盖完全&#xff09;场景及事务&#xff0c;你需要去了解&#xff0…

英语——分享篇——每日200词——2401-2600

2401——moisture——[mɔɪstʃə(r)]——n.潮气&#xff0c;湿气&#xff0c;水分——moisture——moist潮湿的(熟词)ur你的(编码your)e鹅(编码)——潮湿的地方你的鹅一身潮气——Moisture in the atmosphere condensed into dew during the night.——大气中的水分在夜间凝结…

二阶系统时域响应

二阶系统微分方程 二阶系统传递函数 二阶系统单位阶跃响应 过阻尼系统 临界阻尼系统 欠阻尼系统 无阻尼系统 二阶系统阶跃响应仿真 在Matlab中进行仿真&#xff0c;设置不同阻尼比2、1、0.5和0&#xff0c;可以得到结论&#xff1a; 阻尼比越小&#xff0c;系统响应速度越快&…

YOLOV8改进:RefConv(即插即用!重参数化重聚焦卷积替代常规卷积,无额外推理成本下涨点明显!)

1.该文章属于YOLOV5/YOLOV7/YOLOV8改进专栏,包含大量的改进方式,主要以2023年的最新文章和2022年的文章提出改进方式。 2.提供更加详细的改进方法,如将注意力机制添加到网络的不同位置,便于做实验,也可以当做论文的创新点。 3.涨点效果:RefConv,实现有效涨点! 论文地址…

【项目设计】网络对战五子棋(上)

想回家过年… 文章目录 一、项目前置知识1. websocketpp库1.1 http1.0/1.1和websocket协议1.2 websocketpp库接口的前置认识1.3 搭建一个http/websocket服务器 2. jsoncpp库3. mysqlclient库 二、 项目设计1. 项目模块划分2. 实用工具类模块2.1 日志宏封装2.2 mysql_util2.3 j…

蓝桥杯每日一题2023.10.21

后缀表达式 - 蓝桥云课 (lanqiao.cn) 题目描述 题目分析 30分解法&#xff1a;要求出最大的结果就需要加的数越大&#xff0c;减的数越小&#xff0c;以此为思路简单列举即可 #include<bits/stdc.h> using namespace std; typedef long long ll; const int N 2e5 10…

物联网知识复习

物联网的内涵和体系结构 物联网的基本内涵 物联网的基本内涵在于物联&#xff0c;物物相连或者物和人相连的互联网。 也就是说&#xff0c;它是要由物主动发起的&#xff0c;物物互联的互联网。 它的第一层意思是说物和物相连&#xff1b;第二层意思是说物和人相连。 物联网的…

Gradient conjugate priors and multi-layer neural networks

动机 先验参数 m , α , β , v m,\alpha,\beta,v m,α,β,v和随机变量 τ \tau τ KL散度的形式是&#xff1a; Dynamics of m , α , β , v m,\alpha,\beta,v m,α,β,v Dynamics of m , β , v m,\beta,v m,β,v for a fixed α \alpha α 绿色轨迹连接初始点和目标点…

【linux】Linux 查看内存使用情况的几种方法汇总

文章目录 GUI 查看命令获取命令 free命令 vmstat命令 top命令 htop Linux 查看内存使用情况的几种方法包括使用 free 命令、top 命令、htop 命令、vmstat 命令和/proc/meminfo 文件。这些方法可以帮助用户了解系统内存的使用情况&#xff0c;包括总内存、已用内存、空闲内存、缓…

MapperStruct实现类为空

​ 问题描述&#xff1a; MapperStruct生成的实现了为空 按照在MapperStruct官网Installation – MapStruct中的方法配置后&#xff0c;生成的实现了是空的&#xff0c;如下&#xff1a; Overridepublic DeployHistory toEntity(DeployHistoryDto arg0) {if ( arg0 null ) …