01 C++概述
一、C++语言发展史
-
起源与演进
• 1960s:剑桥大学Martin Richards开发BCPL语言,用于系统软件开发。• 1970年:贝尔实验室Ken Thompson在BCPL基础上发明B语言。
• 1972年:Dennis Ritchie和Brian Kernighan设计出C语言,兼具高级语言与汇编特性。
• 1980年:贝尔实验室开始扩展C语言为“带类的C”(C with Classes)。
• 1983年:正式命名为C++,支持面向对象编程。
• 1994年:ANSI C++标准草案制定。
• 1998年:推出ANSI/ISO C++标准(C++98),成为现代C++的基础。
-
意义
• C++在C语言基础上引入面向对象机制,同时保留高效性、可移植性,成为系统级开发和复杂应用的主流语言。
二、C与C++的核心区别
-
C语言特点
• 优势:结构化编程、高效灵活、可移植性强,适合系统程序和科学计算。• 缺陷:
◦ 类型检查较弱,安全性不足。
◦ 缺乏代码重用机制(如类、模板)。
◦ 难以支持大规模软件开发。
-
C++的改进
• 扩展C的功能:增强类型检查、引入引用、异常处理、模板等。• 面向对象特性:封装、继承、多态。
• 泛型编程:通过模板(类模板、函数模板)实现代码通用性。
• 兼容性:C是C++的子集,C++完全兼容C语法。
三、面向对象编程(OOP)思想
-
核心理念
• 程序 = 对象 + 消息:以对象为中心,通过消息传递实现交互。• 对比面向过程:
◦ 面向过程:程序 = 数据 + 算法(按步骤分解任务)。
◦ 面向对象:通过对象的属性和行为模拟现实问题(如“冰箱”对象封装开门、关门等操作)。
-
三大核心特征
• 封装、继承、多态。
四、封装(Encapsulation)
-
定义
• 将数据(属性)和操作(方法)绑定为独立单元(类),隐藏内部细节,仅暴露接口。 -
作用
• 提高安全性(如隐藏电路细节的录音机)。• 简化外部使用,增强模块化。
五、继承(Inheritance)
-
定义
• 子类继承父类的属性和方法,实现代码重用和层次化设计。• 例:
孩子
类继承父母
类的特征和行为。 -
意义
• 减少冗余代码,支持增量开发,提升软件可维护性。
六、多态(Polymorphism)
-
定义
• 同一操作在不同对象中具有不同实现方式,分为:◦ 编译时多态:通过函数重载、运算符重载实现。
◦ 运行时多态:通过虚函数(Virtual Function)实现动态绑定。
-
示例
• 函数重载:同名函数根据参数类型/数量执行不同操作。• 运算符重载:重新定义运算符行为(如
+
用于复数加法)。• 虚函数:基类指针调用派生类方法,实现接口统一。
七、C++的其他关键特性
-
异常处理
• 通过try/catch
机制管理运行时错误,增强程序健壮性。 -
模板(泛型编程)
• 编写与数据类型无关的通用代码,如标准模板库(STL)。 -
命名空间
• 避免命名冲突,逻辑分组代码(如std
命名空间)。
八、总结
C++以C语言为基础,通过引入面向对象、泛型编程等机制,解决了C语言在大型项目中的局限性。其核心优势在于:
• 高效性:保留C语言的底层操作能力。
• 扩展性:通过封装、继承、多态支持复杂系统设计。
• 灵活性:模板和重载机制提升代码复用性。
• 标准化:ANSI/ISO标准确保跨平台兼容性。
C++广泛应用于操作系统、游戏引擎、嵌入式系统等领域,是现代软件工程的重要工具。