初始 c++(1)

目录:

目录

[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++程序了,而不是只会使用它,当别人问我们代码意思时我们也可以回答这个问题了。

cpp 复制代码
#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++是根据函数的地址来进行相关的使用的。博主在这一块的知识水平可能不是什么很够,在后面肯定会补上。

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

相关推荐
一丝晨光4 分钟前
逻辑运算符
java·c++·python·kotlin·c#·c·逻辑运算符
元气代码鼠5 分钟前
C语言程序设计(进阶)
c语言·开发语言·算法
霍霍哈嗨17 分钟前
【QT基础】创建项目&项目代码解释
开发语言·qt
friklogff18 分钟前
【C#生态园】从图像到视觉:Emgu.CV、AForge.NET、OpenCvSharp 全面解析
开发语言·c#·.net
虚拟搬运工1 小时前
Python类及元类的创建流程
开发语言·chrome·python
Code哈哈笑1 小时前
【C++ 学习】多态的基础和原理(10)
java·c++·学习
Aurora_th1 小时前
树与图的深度优先遍历(dfs的图论中的应用)
c++·算法·深度优先·图论·dfs·树的直径
消失的旧时光-19431 小时前
kotlin的密封类
android·开发语言·kotlin
A_cot1 小时前
Redis 的三个并发问题及解决方案(面试题)
java·开发语言·数据库·redis·mybatis
学步_技术1 小时前
Python编码系列—Python原型模式:深克隆与高效复制的艺术
开发语言·python·原型模式