现代C++编程实践-前言

        我是一名工作了17年的C++程序员.我儿子上4年级了, 前段时间他跟我说他想学编程。我就想把我这些年编程的一经验和感悟整理成笔记记录下来,然后教给他。同时也分享给想入门C++编程的朋友们。

        今天先开个头,想说说我对C++的感觉。我学C++已经有20年了,对它已经有了感悟。但是至今不敢说完全掌握了C++,它还是那么的博大精深。市面上都说C++太复杂了,难入门,难精通。其实我觉得如果方法对了,循序渐进还是没那么难的。

        标题用的现代C++,那么在这里就先简单地介绍一下C++的发展历程吧。

        C++ 是由丹麦计算机科学家Bjame Stroustrup发明的。最初被命名为带类的C语言。从诞生到现在C++一直处在发展变化的过程中。下面是关键节点:


1. 诞生:从 "C with Classes" 开始(1979-1983)

  • 创始人:Bjarne Stroustrup(贝尔实验室)
  • 目标:在 C 语言基础上增加类(class)对象的概念,用于仿真项目。
  • 名字演变:最初叫 "C with Classes" → 1983 年正式改名 C++++ 表示比 C 更进一步的增强)。

2. 早期标准化(1985-1998)

  • 1985:首个商业编译器 CFront 1.0 发布(基于 C 的转译器)。
  • 1989C++ 2.0 加入多重继承抽象类模板雏形。
  • 1998:首个国际标准 C++98(ISO/IEC 14882:1998):
    • 确立 STL(标准模板库)(容器、迭代器、算法)
    • 明确 异常处理RTTI(运行时类型识别)

3. 停滞与反思(2003-2011)

  • 2003C++03(小修小补,修复 C++98 的问题)。
  • 2000s 中期:Java/C# 崛起,C++ 被质疑“太复杂”,但高性能领域仍不可替代(游戏引擎、高频交易)。

4. 现代 C++ 革命(2011 至今)

C++11(2011)

被称为**“新时代的起点”**,核心改进:

  • 自动类型推导autodecltype
  • 移动语义右值引用(解决对象拷贝性能问题)
  • Lambda 表达式[](){} 简化回调
  • 智能指针unique_ptrshared_ptr(减少内存泄漏)
  • 并发支持std::thread原子操作
后续版本快速迭代(每 3 年一版):
  • C++14(2014):泛型 Lambda、二进制字面量(0b1100
  • C++17(2017):结构化绑定、std::filesystem(文件系统库)
  • C++20(2020):概念(Concepts)(约束模板)、协程(Coroutines)
  • C++23(2023):std::print(格式化输出)、多维数组视图

为什么 C++ 经久不衰?

  • 性能可控:直接操作硬件、零成本抽象。
  • 生态庞大:从嵌入式到超算,跨领域支持。
  • 持续进化:吸收现代语言特性(如函数式编程元素)。

未来趋势

  • 模块化(减少头文件依赖)
  • 更安全的抽象(如契约编程)
  • 与 Rust 的:在内存安全领域互补共存。

        C++11标准发布之后的C++被称为现代C++。目前C++最新标准版本是C++23,但主流的编译都还没有完全实现对C++23特性的支持。所以在我后续的笔记中将以C++20为基础,选择微软的Visual C++作为编译器。 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

缘来是梦

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值