C 语言与 C++ 的区别
- 语法与关键字:C++ 新增了大量关键字与语法特性,并支持自定义命名空间(
namespace)以避免命名冲突。 - 类与结构体:C++ 引入了
class概念。C 语言仅有struct。在 C++ 中,struct的默认访问权限与继承权限为public,而class默认均为private。 - 核心特性:C++ 全面支持面向对象(封装、继承、多态)、泛型编程(模板)、函数重载及异常处理机制,而 C 语言主要面向过程。
- 内存管理:C 语言依赖
malloc/free函数进行内存分配与释放;C++ 在此基础上提供了new/delete运算符,支持对象构造与析构。 - 编程范式:C 语言侧重面向过程,C++ 支持面向对象与泛型编程,设计模式与抽象能力更强。
- 兼容性:C++ 在设计上高度兼容 C 语言,绝大多数 C 代码可直接在 C++ 环境中编译运行。
- 性能考量:C++ 因面向对象特性与高级抽象机制,在特定场景下可能引入轻微运行时开销,但通过现代编译器优化与零成本抽象原则,性能差异已极小。
C++11 引入的核心新特性
- 自动类型推导:引入
auto关键字,编译器可根据变量初始化表达式的类型自动推断变量类型,显著提升代码可读性与编写效率。 - 范围
for循环:支持for (auto& element : container)语法,允许直接遍历容器元素,大幅简化迭代操作并减少样板代码。 - 智能指针:引入
std::shared_ptr、std::unique_ptr等智能指针类。基于 RAII(资源获取即初始化)机制自动管理动态内存,有效避免内存泄漏与悬垂指针问题。


