-
克服 C 语言的局限性:
-
缺乏对复杂抽象的直接支持: 随着软件规模和复杂度的增长,C 语言在组织和管理大型代码库、构建复杂的数据结构和交互关系方面显得力不从心。过程式编程在大型项目中容易导致代码重复、耦合度高、维护困难。
-
缺乏封装: C 语言的结构体 (
struct
) 将数据和操作数据的函数分离,无法强制将数据和操作捆绑在一起,容易导致数据被意外修改,降低了代码的安全性和可维护性。 -
缺乏继承和多态: C 语言没有内置的机制来实现代码复用(继承)和基于接口的统一操作(多态),这使得构建具有层次结构的、可扩展的系统变得复杂且容易出错。
-
-
优势突出:
-
1980 年代,面向对象编程 (OOP) 理念(封装、继承、多态)被证明是管理软件复杂性和提高代码复用性、可扩展性、可维护性的强大工具。
-
C++ 的设计目标之一就是将 OOP 的核心特性高效地引入到 C 语言中。Bjarne Stroustrup 在贝尔实验室的工作(开发分布式系统、模拟等)直接面临了 C 语言的这些局限性,并受到 Simula 语言(早期 OOP 语言)的启发。
-
C++ 提供了
class
关键字,将数据(成员变量)和操作(成员函数)封装在一起,并支持访问控制 (public
,private
,protected
)。 -
提供了继承机制(单继承、多继承),允许派生类复用基类的代码。
-
通过虚函数 (
virtual
) 实现了运行时多态。 -
保留了C语言的优点。
-