目录
1.C语言和C++的关系
C++是C语言的一个超集,也就是说C语言有的,C++都有,而C++有的,C语言未必就有。
同时,g++能编译C++文件,同样也能编译C语言文件。
C程序可以通过 __cplusplus来判断编译器是gcc还是g++,__cplusplus的值是long int类型,记录C++编译器的版本号。
情况一:使用gcc编译C程序
#include <stdio.h>
int main()
{
printf("%ld.\n", __cplusplus);
return 0;
}
实验结果
表明,gcc编译器无法识别 __cpluscplus符号。
情况二:使用g++编译C程序
#include <stdio.h>
int main()
{
printf("%ld.\n", __cplusplus);
return 0;
}
实验结果
__cplusplus打印出来的是c++的版本号,并且是被g++编译器所定义。
2. C++对C库的兼容性
首先找一下C++库的位置在哪。
在ubuntu下,C++库的位置在 /usr/include/c++,之后就是库的版本号。
C语言最常用的 stdio.h, 对应c++的是 cstdio(注意,没有后缀)。
vim打开cstdio,探究一下它有什么特点。
首先,一上来它就将stdio.h给包含进来,所以,我们就不用操心用不着printf。
继续往下看。
这说明了什么?stdio.h的符号在 C++看来,都是定义在默认命名空间里。
为了使得原本C库的符号变成更有C++的“味道”,C++的设计者将这些符号包含在一个 std的命名空间里。
为啥要这样做啊?不是说cstdio是兼容stdio.h吗?这就是兼容啊,将c++的特性兼容在C语言上,统一标准。c++其它的库也是类似的定义,它们都有自己的命名空间。
一定要记住,命名空间的作用就是解决命名冲突。
所以,得出了什么结论?
C++更建议的头文件不是<stdio.h>,而是<cstdio>。类似的还有<cstring>头文件
3. C++库的简单介绍
首先,C++常见三种类型的库:C++标准库,C++面向对象库,还有C++ STL标准模板库
- C++标准库是完全继承C语言库,并且以C++的方式重新,位于std命名空间;
- C++面向对象库,如string,iostream等,位于std命名空间;
- C++ STL标准模板库,如vector, map等,位于std命名空间。
4.最后
学好了C++的库,学好了C++。越是高级的语言就越依赖这门语言的库,如python、java。