|
发表于 2025-4-19 17:30:00
|
显示全部楼层
C与C++深度技术对比(修正优化版)
---
1. 内存管理机制
- C语言
- // 手动管理堆内存
- int* arr = (int*)malloc(10 * sizeof(int));
- free(arr); // 必须显式释放
- // 直接内存操作
- void* ptr = malloc(100);
- int* int_ptr = (int*)ptr + 5; // 指针偏移到第5个int位置
复制代码
- C++
- // RAII范式管理资源
- class Resource {
- int* data;
- public:
- Resource() { data = new int; } // 构造分配
- ~Resource() { delete data; } // 析构释放
- };
- // 移动语义优化
- std::vector<int> v1 = {1,2,3};
- std::vector<int> v2 = std::move(v1); // 资源转移,零拷贝
复制代码
---
2. 编程范式支持
- C语言
- // 面向过程编程
- #define SWAP(a, b, type) { type temp = a; a = b; b = temp; }
- SWAP(x, y, int); // 通过宏实现代码复用
复制代码
- C++
- // 面向对象示例
- class Animal {
- public:
- virtual void sound() = 0; // 纯虚函数
- };
- class Dog : public Animal {
- void sound() override { std::cout << "Woof"; }
- };
- // 函数式编程
- std::vector<int> vec = {2,5,1};
- std::sort(vec.begin(), vec.end(), [](int a, int b){ return a > b; });
复制代码
---
3. 类型系统差异
- C语言
- struct Point { // 仅数据聚合
- int x, y;
- };
- typedef struct Point Point; // 需要显式类型重命名
复制代码
- C++
- template <typename T> // 泛型编程
- T max(T a, T b) { return (a > b) ? a : b; }
- // C++20概念约束
- template<typename T>
- requires std::integral<T>
- T add(T a, T b) { return a + b; }
复制代码
---
4. 标准库对比
- C语言
printf, qsort 等基础函数
- C++
- // STL容器与算法
- std::vector<std::string> names {"Alice", "Bob"};
- std::unordered_map<int, std::string> id_map;
- // 现代迭代方式
- for (auto&& [key, val] : id_map) {
- std::cout << key << ":" << val;
- }
复制代码
---
核心差异总结
- C强调过程化与底层控制,内存操作更自由但风险更高
- C++通过OOP、泛型、现代特性构建抽象,在保持性能的同时提升开发效率
- C++11/14/17/20持续引入constexpr、concepts、modules等新特性
建议根据项目需求选择:系统级底层开发优先C,大型应用开发优选C++。
以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。 |
|