目录

初识C

初识C++

在初学C语言时,第一句代码是"hello word!",那么在C++中也是如此

https://i-blog.csdnimg.cn/direct/ec4b1726b585440a8fd8b09fd89f068e.png

        这与C语言中的还真是大不相同啊。

下面就是来分析这里面的代码了

第一:头文件的包含

#include

在C++中包含头文件是没有 .h的后缀的,这是为了与C语言做分别。(当然,也可以包含 .h 后缀的头文件,这是为了兼容C语言)

第二:namespace

        namespace是命名空间,是C语言内没有的关键字。

命名空间的出现是为了避免命名冲突或者名字污染的问题

namespace的定义

  • namespace,后面跟要命名的名字,然后接上{}即可,{}内即为命名空间的成员,需要注意 } 后面不需要接 ;(分号)

https://i-blog.csdnimg.cn/direct/15b7519ca7fc4ed5836cd172e613a83d.png

namespace 的本质是定义出一个域,这个域是与全局和局域相独立的,不同的域是可以定义同名变量的,比如这样

https://i-blog.csdnimg.cn/direct/f2752ee1595143cf9e507df4f93ae85e.png

可以看到,左边的代码运行时不会报错的,也能正常的打印出来,而右边的代码则报错了。

namespace 的使用

现在再来看一下 namespace 定义的域内的东西要怎么使用,上面的代码在运行时,打印的是全局变量的数据,那么要怎么才能打印 namespace 域内的数据呢

很简单,只需要使用 :: 就可以了

:: 叫做域作用限定符

使用:在左边没有给名称时,默认为全局,有名称时会优先去名称域内查找右边给定名称的数据

https://i-blog.csdnimg.cn/direct/5bfd62415d1343969ea4707d3c0ccce5.png

还有其他2种使用方法:

1.using将命名空间中某个成员展开,项目中经常访问的不存在冲突的成员推荐这种方式

https://i-blog.csdnimg.cn/direct/21529d98eff647ce97e6e1d343b98527.png

2.展开命名空间中全部成员,项目不推荐,冲突风险很大,日常小练习程序为了方便推荐使用

https://i-blog.csdnimg.cn/direct/9c44fd90e0644b2793a005d733db4667.png

命名空间的嵌套

命名空间是还可以嵌套的

https://i-blog.csdnimg.cn/direct/3f548f2a29ab4a7e9d5cafc5c5d7f3d7.png

在使用时就是再多使用一次 :: 就可以了

其他注意:

1.namespace只能定义在全局

2.项目工程中多文件中定义的同名namespace会认为是⼀个namespace,不会冲突

3.C++标准库都放在一个叫 std(standard) 的命名空间中

C++的输入与输出

1.是Input Output Stream的缩写,是标准的输入、输出流库,定义了标准的输入、输出对象

2.std::cin 是istream类的对象,它主要面向窄字符(narrowcharacters(oftypechar))的标准输如流

3.std::cout 是ostream类的对象,它主要⾯向窄字符的标准输出流。

4.std::endl 是⼀个函数,流插入输出时,相当于插入⼀个换行字符加刷新缓冲区。

5.«是流插入运算符,»是流提取运算符。(C语言还用这两个运算符做位运算左移/右移,当然,在C++中也一样还能用)

std::cout 和 std::endl 就是下面的 cout 和 endl,因为已经展开了 std 库,所以没用区域限定符

https://i-blog.csdnimg.cn/direct/ec4b1726b585440a8fd8b09fd89f068e.png

看一下 cin

https://i-blog.csdnimg.cn/direct/a589f9ac465948d7b55bc176da56b9fd.png

体验下来就是,与 printf 和 scanf 很相似

但是使用C++输入输出更方便,不需要像printf 和 scanf输入输出时那样,需要手动指定格式

另外还能发现,文件内没有包含<stdio.h>,但能使用printf和scanf,是因为中包含间接包含了<stdio.h>,但这只是vs系列的编译器是这样的。