众所周知,C++是C语言的继承,进一步扩充和完善了C语言
那么它和C语言的区别到底在哪里呢?以下用代码解释几个C++较之C语言的优势。
- 命名空间
首先新建一个test.c文件,并输入以下代码
运行可得:
这个结果是可预知的,因为a的重定义,那么换一种方式:
运行结果如何呢?
可以看到是虽然有警告,但是是可以运行出来的,而且结果是以在main函数中定义的a,为什么同样是定义了两个a,换了位置结果就不同了呢?
这是和开辟空间的位置有关的
但是如果一定要将同一个变量在同一空间定义两次,很明显C语言是不能实现的,这个时候我们就需要C++来实现
可以看到,C++也不可以直接在同一空间直接定义两次,那么C++是如何实现的呢?
用过C++的人一定发现了,上述代码和平时使用C++的样子不一样,在头文件之下缺少一句
using namespace std;
那么这句代码的意义是什么呢?我们先来看一个类似的结构:
看到了吗?只要加上namespace就可以在静态区同时定义两次,在这里namespace的作用是名字隔离,就是将各个变量的名字隔离起来,让他们互相察觉不到,像是平行空间。
namespace顾名思义就是命名空间的意思,只要在同一个区开辟不同的域就可以定义很多相同名称的变量,而且命名空间是可嵌套、可更改的
那么using namespace std;到底有什么作用呢?
平时我们使用C++的输入输出都是用cin、cout,但是上面的代码我都是用printf,为什么呢?
很明显,这样是不能用cout的,那么怎么可以用呢?
加上std命名空间的前缀就可以向编译器说明即将使用std下的cout标准对象,但是如果使用次数比较多的话,很明显会很麻烦,而且容易遗漏,那么怎么能简化代码呢?
在前面加上using namespace std;也可以说明以下会使用std库的标准对象。
- 函数重载
基于上面的命名空间,接着解释函数重载。
函数重载是指在同一作用域内,可以有一组具有相同的函数名,但是不同参数列表的函数,这组函数就被称为
重载函数
。
重载函数通常用来命名功能相似的函数,这样减少了函数名的数量,避免了命名空间的污染,大大
提高了程序的可读性
。
注意:参数不同的意思是个数不同或类型不同。
- 编译
首先要了解编译的过程: