前言

之前的博客中,我们简单入门了解了 STL 标准模板库的基础概念,相信大家对 C++ 的标准组件有了初步认知。
想要学好 C++,只会用 STL 是远远不够的,我们必须了解 C++ 的版本迭代。C++ 发展至今有多个标准化版本,其中最重要、最具代表性的两个版本就是 C++98C++11
本篇博客大家搞懂这两个核心版本的区别、地位和学习意义,为后续深入学习 C++11 语法特性打好基础。

C++ 版本整体概述

C++ 语言并非一成不变,从诞生至今,官方会每隔数年更新一次标准,修复旧版本缺陷、新增语法特性、优化编译机制,让代码更简洁、安全、高效。
在所有版本中,有两个版本是绝对绕不开的核心版本,也是所有 C++ 开发者的必修内容:
1、C++98:C++ 首个官方标准化版本,C++ 语言的基石
2、C++11:C++ 现代化的里程碑版本,颠覆性升级
后续的 C++14、C++17、C++20 等新版本,都是在 C++11 的基础上做优化和补充,掌握 C++11 是学习所有新版 C++ 的前提。

基石版本:C++98 详细介绍

C++98是 1998 年正式发布的 C++ 第一个国际标准化版本,也是 C++ 语言真正走向规范化、工业化的开端。
在 C++98 之前,C++ 语法杂乱、没有统一标准,不同编译器的编译规则、语法支持各不相同,代码兼容性极差,根本无法用于大型项目开发。
C++98 的诞生彻底解决了这个问题,核心贡献主要有两点:
1、统一了 C++ 核心语法规范,固定了面向对象、类、继承、多态、模板等基础语法规则
2、正式引入并标准化了 STL 标准模板库,包含容器、算法、迭代器等核心组件
简单来说:我们现在学习的 C++ 基础语法,绝大部分都源自 C++98 版本
但 C++98 存在非常多的短板:语法繁琐、代码冗余、缺少便捷特性、内存管理容易出错、不支持高效泛型编程,很难开发高并发、高性能、高安全性的项目。这也是后续 C++11 紧急更新的核心原因。

革新版本:C++11 详细介绍

C++11 是 2011 年发布的 C++ 官方标准版本,也是 C++ 历史上改动最大、意义最深远的一次升级,被业内称为「C++ 现代化革命」。
和小修小补的版本更新不同,C++11 并不是简单修复 bug,而是新增了上百个语法特性和底层优化,彻底弥补了 C++98 的所有短板。
对于新手开发者而言,C++11 的核心优势可以总结为三点:
1、代码更简洁:简化了大量冗余写法,减少重复代码,开发效率大幅提升
2、代码更安全:新增智能指针、空指针规范等特性,大幅规避内存泄漏、野指针等经典 bug
3、功能更强大:支持 Lambda 表达式、自动类型推导、范围 for 循环、多线程等现代化特性
目前所有企业级项目、开源框架、算法工程,全部基于 C++11 及以上版本开发。如果只学 C++98,写出的代码老旧、低效,完全无法适配现代开发场景。

C++98 与 C++11 核心定位区别

很多新手分不清两个版本的学习定位,这里给大家直白总结:

  • C++98:基础入门必备,用来掌握 C++ 底层核心语法、面向对象思想、STL 基础使用,是打基础的版本
  • C++11:实战开发必备,是现代 C++ 的标准,是从「入门语法」走向「实战开发」的分水岭

本篇博客说明 & 后续规划

为了让大家循序渐进学习,本篇仅做版本发展史和定位介绍,不讲解任何具体 C++11 语法,避免新手知识点混乱。
后续我会更新一系列专属博客,逐个拆解 C++11 核心高频语法,专门适配新手学习,重点讲解大家最常用、面试和开发必考的特性:

序号 知识点
1 auto 自动类型推导
2 范围 for 循环用法
3 列表初始化
4 类型别名using
5 原子操作atomic
6 表示空指针的方式nullptr
7 默认构造函数(default和delete)
8 enum class强类型枚举
9 C++11 多线程基础特性
10 移动语义和std::move 右值引用
11 Lambda 匿名函数,函数式编程
12 智能指针

总结

1、C++98 是 C++ 标准化的基石,奠定了所有基础语法和 STL 框架,是新手入门的必经阶段。
2、C++11 是 C++ 现代化的里程碑,是现代开发的通用标准,是进阶实战的核心。
3、学习顺序:先掌握 C++98 基础(特别是stl),再系统学习 C++11 新特性,两者结合才算完整掌握现代 C++。

更多推荐