在初学C语言时,第一句代码是"hello word!",那么在C++中也是如此
这与C语言中的还真是大不相同啊。
下面就是来分析这里面的代码了
第一:头文件的包含
#include <iostream>
在C++中包含头文件是没有 .h 的后缀的,这是为了与C语言做分别。(当然,也可以包含 .h 后缀的头文件,这是为了兼容C语言)
第二:namespace
namespace是命名空间,是C语言内没有的关键字。
命名空间的出现是为了避免命名冲突或者名字污染的问题
namespace的定义
- namespace,后面跟要命名的名字,然后接上{}即可,{}内即为命名空间的成员,需要注意 } 后面不需要接 ; (分号)
这样就算是创建好了
namespace 的本质是定义出一个域,这个域是与全局和局域相独立的,不同的域是可以定义同名变量的,比如这样
可以看到,左边的代码运行时不会报错的,也能正常的打印出来,而右边的代码则报错了。
namespace 的使用
现在再来看一下 namespace 定义的域内的东西要怎么使用,上面的代码在运行时,打印的是全局变量的数据,那么要怎么才能打印 namespace 域内的数据呢
很简单,只需要使用 :: 就可以了
:: 叫做域作用限定符
使用:在左边没有给名称时,默认为全局,有名称时会优先去名称域内查找右边给定名称的数据
这样就能查找并使用了
还有其他2种使用方法:
1.using将命名空间中某个成员展开,项目中经常访问的不存在冲突的成员推荐这种方式
2.展开命名空间中全部成员,项目不推荐,冲突风险很大,日常小练习程序为了方便推荐使用
命名空间的嵌套
命名空间是还可以嵌套的
在使用时就是再多使用一次 :: 就可以了
其他注意:
1.namespace只能定义在全局
2.项目工程中多文件中定义的同名namespace会认为是⼀个namespace,不会冲突
3.C++标准库都放在一个叫 std(standard) 的命名空间中
C++的输入与输出
1.<iostream>是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 库,所以没用区域限定符
看一下 cin
体验下来就是,与 printf 和 scanf 很相似
但是使用C++输入输出更方便,不需要像printf 和 scanf输入输出时那样,需要手动指定格式
另外还能发现,文件内没有包含<stdio.h>,但能使用printf和scanf,是因为<iostream>中包含间接包含了<stdio.h>,但这只是vs系列的编译器是这样的。