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++广泛应用于操作系统、游戏引擎、嵌入式系统等领域,是现代软件工程的重要工具。
