C++的介绍及与C语言的对比
一.C语言与C++
C语言
C语言是为开发Unix系统而创建的语言,它是一种面向过程的、抽象化的通用程序设计语言,广泛应用于底层开发。它贴近硬件,运行速度快,是系统级编程语言,底层高级语言。
C++语言
C++可以说是C语言的增强版,它扩展自C语言,并添加了面向对象编程
的特性。C++具备以下特点:
-
兼容性与扩展性:C++既保留了C语言的低级特性和指针操作,又增加了高级编程的特性,如面向对象编程。这使得C++能够很好地兼容C语言,同时提供更丰富的编程接口和功能
。 -
面向对象:C++支持类和对象的概念,允许程序员定义自己的数据类型,并实现继承、封装和多态等面向对象特性。这提高了代码的可重用性和可维护性。
-
模板/泛型编程:C++引入了模板的概念,支持泛型编程,这使得代码更具灵活性和可重用性。通过模板,可以编写与数据类型无关的代码,从而提高开发效率。
-
高效性能:C++是一种编译型语言,代码在运行前会进行优化,因此执行效率非常高。这使得C++在开发对性能要求较高的应用(如游戏、嵌入式系统等)时具有显著优势。
-
可移植性:C++编写的程序可以在多种操作系统和平台上运行,具有很好的可移植性。
二.面向过程和面向对象
面向过程
面向过程(Procedure Oriented,简称PO)是一种以过程为中心
的编程思想。它强调通过一系列有序的步骤或过程来解决问题。在面向过程的程序中,数据和对数据的操作是分离的
。这种编程方法主要关注的是“怎么做”,即如何通过明确的步骤和算法来完成任务。
面向对象
面向对象(Object Oriented,简称OO)是一种以对象为基础
的编程思想。它将数据和相关操作封装在一个对象(类)中
,使得对象能够作为一个整体被处理。面向对象编程主要关注的是“谁来做”,即哪个对象应该负责完成特定的任务。这种方法更符合人类的思维方式,有助于提高代码的可读性和可维护性。
对象是类的实例,类中封装了数据的定义和数据的操作方法
面向过程与面向对象的区别
-
编程思想不同:面向过程以过程或函数为中心,而面向对象以对象为中心。
-
数据与操作的关联方式不同:在面向过程中,数据和对数据的操作是分离的;而在面向对象中,数据和相关操作被封装在同一个对象中。
-
模块化程度不同:面向对象比面向过程具有更高的模块化程度。在面向对象中,每个对象都可以看作是一个独立的模块,具有更好的复用性和可扩展性。
-
可维护性不同:由于面向对象将数据和相关操作封装在一起,因此当数据或操作发生改变时,只需要修改相应的对象,而不需要对整个程序进行大规模的修改。这使得面向对象的程序更易于维护和修改。
-
性能考虑不同:面向过程的程序通常比面向对象的程序具有更高的执行效率,因为面向过程的程序在执行时不需要进行对象的创建和销毁等操作。然而,随着计算机硬件性能的不断提升,这种性能差异在大多数情况下已经变得不再显著。
三.C++的应用领域
-
桌面应用:主要基于Windows平台的应用
-
系统级软件:操作系统,驱动程序,数据库,网络协议
-
底层架构:Java虚拟机,python解释器,AI核心库
-
游戏开发:游戏引擎,服务器端,客户端
-
嵌入式开发:工业控制,智能家电,航空航天,电子通讯
四.Cpp的运行和标准
1.编译型语言和解释型语言
-
编译型语言:编译器将源代码翻译成机器码,最终生成二进制文件,提交给计算机执行。C和C++都是典型的编译型语言。
-
解释型语言:解释器将代码逐行解释成机器码,并交给计算机执行。代表:Python,JavaScript
2.C++的运行过程及相关文件解释
编写C++代码 (.cpp文件) --> 预处理 --> 编译(.obj文件) --> 链接 --> 生成可执行文件(.exe文件) --> 执行程序
-
.cpp文件:它是C++语言编写的程序源文件
-
.obj文件:.cpp文件被编译后生成的文件
-
.exe文件:可执行文件,在windows系统中用户双击即可运行
C++代码运行的基本过程
-
1.编写代码:首先,开发者需要使用文本编辑器或集成开发环境(IDE)来编写C++源代码。这些代码保存在以.cpp为扩展名的文件中。
-
2.预处理:在编译之前,C++预处理器会处理源代码中的预处理指令。这些指令通常以#开头,如#include, #define等。预处理器会将包含的头文件内容替换到源代码中,并处理宏定义等。
-
3.编译:编译器读取经过预处理的源代码,并将其转换成汇编语言或机器代码。在这个过程中,编译器会检查语法错误、类型不匹配等问题,并优化代码以提高运行效率。如果编译成功,会生成一个或多个目标文件(通常是.o或.obj文件),这些文件包含程序的机器代码版本。
-
4.链接:链接器将编译生成的目标文件与必要的库文件组合在一起,形成一个完整的可执行程序。链接器解决程序中的符号引用问题,确保所有调用的函数和全局变量都能正确解析。
-
5.执行:一旦链接成功,就会生成一个可执行文件(在Windows上通常是.exe文件,在Unix-like系统上则没有扩展名或可能是.elf等)。运行这个可执行文件会启动程序,操作系统的加载器会将程序加载到内存中,并由CPU执行其中的指令。
C与C++的运行过程基本相同,区别主要在于生成的文件不同:
-
源代码文件:C语言的源代码文件为.c ; C++的源代码文件为.cpp
-
编译文件:C语言的编译文件为.o ; C++的编译文件为.obj