C++融合了3种不同的编程方式:
- C语言代表的
过程性语言
- C++在C语言基础上添加了类代表的
面向对象语言
- C++模板支持的
泛型编程
C++继承C语言高效、简洁、快速和可移植性的传统。
Bell实验室的Dennis Ritchie为了设计开发UNIX的通用性、可移植性等,在旧语言的基础上开发了C语言。
汇编语言依赖于计算机的内部机器语言,直接对硬件进行操作。
数据:程序使用和处理的信息。
算法:程序使用的方法。
C语言是 过程性语言
,强调编程的算法方面。一种结构化的编程方式。
C语言的新原则:自顶向下设计
,理想:将大型程序拆分
小型、便于管理的任务。
过程性语言(C语言)
强调算法
,OOP(C++、Java等)
强调数据
。
OOP不像过程性编程,其理念是设计与问题的本质特性相对应的数据格式。区别如下:
过程性语言(让问题来满足语言)
OOP编程(让语言来满足问题)
在C++中,类是一种规范
,描述了新型数据格式
,对象则根据类规范构造的特定数据结构
。
类规定了可使用哪些数据
来表示对象
以及可以对这些数据执行哪些操作
。
OOP程序设计方法:先设计类(可以明确表示程序要处理的东西)
,然后设计使用类的对象的程序
。
从低级组织(如类)
到高级组织(如程序)
的处理过程叫作 自下而上
的编程思想。
类定义 = 数据 + 方法
OOP可以创建可重用的代码,减少大量的工作,信息隐藏可以保护数据,使其免遭不适当的访问。
不同的环境(Windows和Macintosh
)下提供编程的类库
,可以方便地重用
和修改现有的、经过仔细测试的代码。
泛型编程(generic programming)是C++支持的另一种编程模式。与OOP目标系统。
术语:泛型(指创建独立于类型的代码)
。
OOP与泛型编程的区别:
OOP
强调编程的数据
方面,是管理大型项目
的工具泛型编程
强调独立于特定数据类型
,提供执行常见任务(如对数据排序或合并链表)
的工具。
C++泛型编程需要对语言进行扩展,以便于可以只编写一个泛型(即不是特定类型的)函数
,并将其用于各种实际类型
。
C++是C语言的超集
,任何有效的C程序都是有效的C++程序。
- 硬件:分块放置模块,通过重写模块,最大限度降低可移植性问题。
- 语言上的差异性:国际组织定义了C语言标准、定义了C++99、C++11、C++14等标准。
- OOP提供了高级抽象
- C提供了低级硬件访问
👉 C++既可以通过OOP进行抽象,也可完成类似C一样的对硬件访问的操作。
更多编译细节请阅读【编译原理】
- Linux/UNIX : GNU gcc/g++
- Windows :软件IDE
- Mac OS : Xcode自带g++和clang