初始 c++(1)

  目录:

   

目录

        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.mzph.cn/news/114043.shtml

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

相关文章

分类预测 | MATLAB实现SSA-CNN-LSTM-Attention数据分类预测(SE注意力机制)

分类预测 | MATLAB实现SSA-CNN-LSTM-Attention数据分类预测&#xff08;SE注意力机制&#xff09; 目录 分类预测 | MATLAB实现SSA-CNN-LSTM-Attention数据分类预测&#xff08;SE注意力机制&#xff09;分类效果基本描述模型描述程序设计参考资料 分类效果 基本描述 1.MATLAB实…

【MySQL】视图、函数、存储过程优缺点

文章目录 1. 概述2. 视图2.1 优点2.2 缺点 3. 存储过程与存储函数3.1 优点3.2 缺点 1. 概述 因为视图、函数、存储过程的使用一般具有使用少或具备争议的特点&#xff0c;所以该章主要记录对应的优缺点&#xff0c;需要使用时需结合业务谨慎评估是否使用 2. 视图 一个或者多…

Tomcat设置IP黑名单和白名单server.xml

方式一&#xff1a; -- 只允许192.168.1.2和192.168.2.3 <Context path"" docBase"xxxAdmin" debug"0" reloadable"true" ><Valve className"org.apache.catalina.valves.RemoteAddrValve" allow"192.168.1.…

用 pytorch 训练端对端验证码识别神经网络并进行 C++ 移植

文章目录 前言安装安装 pytorch安装 libtorch安装 opencv&#xff08;C&#xff09; 准备数据集获取训练数据下载标定 编码预分析 数据集封装格式 神经网络搭建神经网络训练神经网络测试神经网络预测C 移植模型转换通过跟踪转换为 Torch Script通过注解转换为 Torch Script 编写…

Python基础复习【第二弹】【黑马】

本篇是观看b站黑马视频所做的笔记第一弹&#xff0c;为99-126节。 b站-黑马Python import json from pyecharts.charts import Line from pyecharts.charts import Bar from pyecharts.options import * from pyecharts.globals import ThemeType # 1.1 将一个列表转换为json…

数据结构 排序

数据结构 排序 文章目录 数据结构 排序1. 排序的概念及引用1.1 排序的概念1.2 常见的排序算法 2.常见排序算法的实现2.1 插入排序2.1.1 基本思想2.1.2 直接插入排序2.1.3 希尔排序(缩小增量排序) 2.2 选择排序2.2.1 基本思想2.2.2 直接选择排序2.2.3 堆排序 2.3 交换排序2.3.1 …

Java后端模拟面试 题集④

1.你先作个自我介绍吧 面试官您好&#xff0c;我叫张睿超&#xff0c;来自湖南长沙&#xff0c;大学毕业于湖南农业大学&#xff0c;是一名智能科学与技术专业的统招一本本科生。今天主要过来面试贵公司的Java后端开发工程师岗位。 大学里面主修的课程是Java、Python、数字图…

使用QT实现http里面的get和post

#1024程序员节&#xff5c;参与投稿&#xff0c;赢限定勋章和专属大奖# #假如你有一台服务器&#xff0c;你最想做哪些事&#xff1f;# #你被什么样的BUG困扰过一周以上&#xff1f;# 在http里面下面这些方法和服务器的响应代码一起用于HTTP协议中的请求和响应交互。请注意&…

Spring Boot + EasyUI 创建第一个项目(一)

创建一个Spring Boot和EasyUI相结合的项目。 一、构建一个Spring Boot项目 Spring Boot之创建一个Spring Boot项目&#xff08;一&#xff09;-CSDN博客 二、配置Thymeleaf Spring Boot Thymeleaf&#xff08;十一&#xff09;_thymeleaf 设置字体_人……杰的博客-CSDN博客…

解决 el-tree setChecked 方法偶尔失效的方法

目前在大多数公司中&#xff0c;菜单的权限控制都是不可或缺的功能 在和后端配合做权限控制的时候不可避免的会用到 el-tree 然而这个组件本身带的坑不少 我们需要回显对应角色拥有的菜单&#xff0c;在不严格的模式下&#xff0c;父节点的选中会连带子节点的选中 如果 &a…

mybatisplus开启sql打印的三种方式

1、在application.yml文件中添加mybatisplus的配置文件 使用mybatisplus自带的log-impl配置&#xff0c;可以在控制台打印出sql语句、执行结果的数据集、数据结果条数等详细信息&#xff0c;这种方法适合再调试的时候使用&#xff0c;因为这个展示的信息详细&#xff0c;更便于…

【算法练习Day25】 重新安排行程N 皇后 解数独

​&#x1f4dd;个人主页&#xff1a;Sherry的成长之路 &#x1f3e0;学习社区&#xff1a;Sherry的成长之路&#xff08;个人社区&#xff09; &#x1f4d6;专栏链接&#xff1a;练题 &#x1f3af;长路漫漫浩浩&#xff0c;万事皆有期待 文章目录 重新安排行程N 皇后解数独总…

C# Socket通信从入门到精通(2)——多个同步TCP客户端C#代码实现

前言: 我们在开发Tcp客户端程序的时候,有时候在同一个软件上我们要连接多个服务器,这时候我们开发的一个客户端就不够使用了,这时候就需要我们开发出来的软件要支持连接多个服务器,最好是数量没有限制,这样我们就能应对任意数量的服务器连接,由于我们开发的Tcp客户端程…

使用 Visual Studio Code (VS Code) 作为 Visual C++ 6.0 (VC6) 的编辑器

使用 Visual Studio Code (VS Code) 作为 Visual C 6.0 (VC6) 的编辑器 由于一些众所周知的原因&#xff0c;我们不得不使用经典&#xff08;过时&#xff09;的比我们年龄还大的已有 25 年历史的 VC 6.0 来学习 C 语言。而对于现在来说&#xff0c;这个经典的 IDE 过于简陋&a…

Leetcode1833. 雪糕的最大数量

Every day a Leetcode 题目来源&#xff1a;1833. 雪糕的最大数量 解法1&#xff1a;贪心 排序 本题唯一的难点在于计数排序。 计数排序详解&#xff1a;C算法之计数排序 为了尽可能多的买到雪糕&#xff0c;我们选择从价格低的雪糕开始买&#xff0c;统计能够买到的雪糕…

Java学习_day03_变量数据类型运算符

文章目录 变量定义声明赋值使用简化 数据类型基本数据类型整型浮点型布尔型字符型空型 引用数据类型数据类型转换自动类型转换强制类型转换 运算符算术运算符赋值运算符比较运算符逻辑运算符位运算符条件运算符一元运算符二元运算符三元运算符运算符优先级 变量 变量类似于数学…

计算机算法分析与设计(12)---贪心算法(最优装载问题和哈夫曼编码问题)

文章目录 一、最优装载问题1.1 问题表述1.2 代码编写 二、哈夫曼编码2.1 哈夫曼编码概述2.2 前缀码2.3 问题描述2.4 代码思路2.5 代码编写 一、最优装载问题 1.1 问题表述 1. 有一批集装箱要装上一艘载重量为 c c c 的轮船&#xff0c;已知集装箱 i ( 1 ≤ i ≤ n ) i(1≤i≤…

【C++】假设给类分配的是栈的空间,那么计算机是如何访问栈中不同位置的对象的数据的呢?

2023年10月22日&#xff0c;周日上午 当在栈上创建一个对象时&#xff0c;计算机会为该对象分配一块连续的内存空间。该内存空间的位置在栈帧中&#xff0c;栈帧是用来存储函数调用信息和局部变量的一块内存区域。 栈帧中包含一个指针&#xff0c;称为栈指针&#xff08;stack…

昇腾CANN 7.0 黑科技:大模型训练性能优化之道

目前&#xff0c;大模型凭借超强的学习能力&#xff0c;已经在搜索、推荐、智能交互、AIGC、生产流程变革、产业提效等场景表现出巨大的潜力。大模型经过海量数据的预训练&#xff0c;通常具有良好的通用性和泛化性。用户基于“大模型预训练微调”开发范式即可在实际业务场景取…

MySQL——练习

MySQL 一、练习要求二、练习过程 一、练习要求 创建表并插入数据&#xff1a; 字段名数据类型主键外键非空唯一自增idINT是否是是否nameVARCHAR(50)否否是否否glassVARCHAR(50)否否是否否 sch 表内容 id name glass 1 xiaommg glass 1 2 xiaojun glass 21、创建一个可以统计…