C语言和C++的主要区别
C语言与C++的主要区别
1. 编程范式
特性 | C语言 | C++ |
---|---|---|
核心范式 | 过程式编程(Procedural) | 多范式(面向对象 + 泛型 + 过程式) |
面向对象 | 不支持类、继承、多态 | 支持类、继承、多态、抽象类 |
泛型编程 | 无 | 支持模板(Template) |
2. 语法与特性
特性 | C语言 | C++ |
---|---|---|
函数重载 | 不支持 | 支持同名函数根据参数类型/数量重载 |
默认参数 | 不支持 | 支持函数参数默认值 |
引用类型 | 无 | 支持引用(int& x )替代指针操作 |
异常处理 | 通过返回值或errno 处理错误 |
支持try/catch/throw 结构化异常处理 |
命名空间 | 无 | 支持namespace 避免命名冲突 |
输入/输出 | 使用printf/scanf |
使用cin/cout 流式输入输出 |
3. 内存管理
特性 | C语言 | C++ |
---|---|---|
动态内存分配 | malloc/calloc/realloc/free |
new/delete 运算符(支持构造/析构) |
智能指针 | 无 | 支持unique_ptr 、shared_ptr 等自动管理 |
内存安全 | 手动管理,易泄漏/悬垂指针 | 通过RAII(资源获取即初始化)减少泄漏风险 |
4. 标准库
特性 | C语言 | C++ |
---|---|---|
标准库内容 | 提供基础库(如stdio.h 、stdlib.h ) |
扩展为STL(标准模板库),包含容器、算法等 |
常用容器 | 需手动实现数组、链表等数据结构 | 提供vector 、map 、list 等容器 |
算法支持 | 需自行实现排序、查找等 | 提供sort() 、
|