C++——C语言与C++的不同

前言

不知道学过C语言和C++的同学有没有过这样的疑问——这两种语言的本质区别到底是什么、有什么不同?反正我再学完C语言再学C++时就产生了这样的疑问,好像C语言里面的头文件呀、一些输入输出的语句、最重要的就是语法格式什么的完全没有什么差别呀,在C++中都能正常使用。听到的它们之间的最大区别就是一句:C语言是面向过程编程的语言,C++是面向对象编程的语言。我当时是压根就没搞懂两者之间到底有什么差别,一直到现在我才慢慢对它们之间的关系有了一些了解。

开始正题

C语言与C++头文件的区别

在刚开始呢,确实是非常纳闷,为啥C语言里面的头文件在C++中都能用,也想验证一下C++的头文件在C语言中能不能用。当时一直没来得及验证,今天验证了一下。C语言的头文件在C++中可以正常使用,但是C++的头文件在C语言中是使用不了的。

 

大家可以看到,当我在C语言文件中使用C++的标准输入输出头时,编译器报错了。报错也是非常的简单易懂,就是:没有iostream这样的文件,编译器终止 。

而在C++文件中调用C语言的头文件却完全没有问题。

 到这里,我就开始觉得C语言是C++的子集,在C语言里面能用的在C++中也能用,但在C++里面能用的在C语言里面就用不了,这不是子集是什么。这是我验证之后对C语言和C++之间的关系的理解。

竟然C语言的头文件在C++中都能用,C++的头文件在C语言中用不了,我就开始琢磨怎么区分两者之间的头文件了。好像没什么区别呀,都是一个<>这个家一串英文字母。知道有一天,我碰到了math.h和cmath。我当时就纳闷了,明明两个头文件里面的的函数好像都是相同的,为什么它们的名字偏偏要去一个不一样的,后来终于发现问题了。

cmath和math.h的区别:cmath是标准C++里面推荐使用的库,math.h是C语言的旧头文件。

原来早期标准库将所有功能在全局域中实现,声明在 .h 后缀的头文件中,使用时只需包含对应的头文件即可,为了和C头文件区分,也为了正确使用命名空间,规定C++头文件不带 .h ;旧编译器还支持 <iostream.h> 格式,后续编译器已不支持,因此推荐使用 < iostream >+std 的方式。

到这里,我就知道怎么区分C语言和C++的头文件了。

命名空间的使用

在区分头文件的区别后,我又产生了一个疑问。为什么C++要加一句using namespace std;而C语言只要直接include就可以了?为什么我已经包含了iostream标准输入输出文件,还用加一句using namespace std;这个。

这是由于为了避免我们自己定义的某个标识符与标准库中的标识符重名,C++中标准库(即iostream中的所有东西)中的东西都被放到了名为 std 的命名空间中,如果我们仅是包含了相关头文件而没有将标准库对应空间中的内容展开,那依旧无法使用标准库中的成员,这句代码则表示将标准库中的东西全部展开到全局域中。为什么用来#include <iostrem>还要使用using namespace std;,因为文件iostream中的所有东西都定义在命名空间std中了。

到这里,我就明白了命名空间的概念和作用了,后面学了C#也是自己动手定义了自己的命名空间。

C语言和C++最大最本质的区别

首先,C++是在C语言的基础上发展而来的,因此C++包含了C语言的所有特性,并且还引入了一些新的特性。这意味着C++可以使用C语言的所有库函数和语法规则。

其次,C++是一种面向对象的编程语言,而C语言则是一种过程式的编程语言。面向对象编程允许开发者使用类、对象、继承、多态等概念来组织和管理代码,这使得C++更加灵活和可扩展。

另外,C++还引入了一些新的特性,如模板、异常处理、命名空间等。模板允许开发者编写通用的代码,可以在不同的数据类型上进行操作;异常处理机制可以更好地处理程序中的错误和异常;命名空间可以帮助开发者组织和管理代码,避免命名冲突。

此外,C++还支持函数重载和运算符重载,这使得开发者可以根据不同的参数类型或操作对象来定义不同的函数或运算符行为。

总的来说,C++相对于C语言来说更加强大和灵活,它提供了更多的特性和工具,使得开发者能够更高效地编写复杂的程序。然而,对于一些简单的应用场景,C语言可能更加简洁和高效。选择使用哪种语言取决于具体的需求和项目要求。

总结

上面这段话,概括了C语言和C++的关系还有区别。总的来说就是C++是从C语言的基础上产生的,虽然它们的语法规则相同,但是它们还是两种不同的编程语言;而C++之所以能够使用C语言的头文件是因为C++包含了C语言的所有库函数。说的最不准确但最简单明了,就是C++是在C语言的基础上加了很多新东西,而且还保留了原来的所有旧东西。

猜你喜欢

转载自blog.csdn.net/qq_64241302/article/details/132364521