在正式学习C++之前,我觉得应该先了解一些有关C++的背景,用途,学习方法等是尤为重要的。这可以帮助我们对C++有一个更加清晰的认知,而不是把它仅仅当作一个编程语言,并且可以让我们以后怎样学习C++有所规划。
C++的起源可以追溯到1979年,当时Bjarne Stroustrup(本贾尼·斯特劳斯特卢普,这个翻译的名字不同的地方可能有差异)在贝尔实验室从事计算机科学和软件工程的研究工作。面对项目中复杂的软件开发任务,特别是模拟和操作系统的开发工作,他感受到了现有语言(如C语言)在表达能力、可维护性和可扩展性方面的不足。
1983年,Bjarne Stroustrup在C语言的基础上添加了面向对象编程的特性,设计出了C++语言的雏形,此时的C++已经有了类、封装、继承等核心概念,为后来的面向对象编程奠定了基础。这一年该语言被正式命名为C++。
在随后的几年中,C++在学术界和工业界的应用逐渐增多。一些大学和研究所开始将C++作为教学和研究的首选语言,而一些公司也开始在产品开发中尝试使用C++。这一时期,C++的标准库和模板等特性也得到了进一步的完善和发展。
C++的标准化工作于1989年开始,并成立了一个ANSI和ISO(International Standards Organization)国际标准化组织的联合标准化委员会。1994年标准化委员会提出了第一个标准化草案。在该草案中,委员会在保持Bjarne Stroustrup(本贾尼·斯特劳斯特卢普)最初定义的所有特征的同时,还增加了部分新特征。
在完成C++标准化的第一个草案后不久,STL(Standard Template Library)是惠普实验室开发的一系列软件的统称。它是由Alexander Stepanov、Meng Lee和David R Musser在惠普实验室工作时所开发出来的。在通过了标准化第一个草案之后,联合标准化委员会投票并通过了将STL包含到C++标准中的提议。STL对C++的扩展超出C++的最初定义范围。虽然在标准中增加STL是个很重要的决定,但也因此延缓了C++标准化的进程。
1997年11月14日,联合标准化委员会通过了该标准的最终草案。1998年,C++的ANSI/IS0标准被投入使用。

时间 | 阶段 | 内容 |
|---|---|---|
1998年 | C++98 | 这是第一个 ANSI/ISO 标准化的 C++ 版本,发布于 1998 年。它基于 Bjarne Stroustrup 于 1985 年创建的原始 C++ 设计,并加入了一些重要特性,如 STL(标准模板库)、异常处理、I/O Streams、命名空间和 RTTI(运行时类型识别)。 |
2003年 | C++03 | 这个版本主要是对 C++98 的一些修正和改进,发布于 2003 年,并未引入新的语言特性,所以一般不把它当做重要版本,存在感也不强。 |
2011年 | C++11 | 这是 C++ 历史上最重大的更新之一,有时被称为 C++0x(因为它原计划在 200x 年发布,一直跳票)。它引入了大量新特性,如自动类型推断(auto 关键字)、基于范围的 for 循环、Lambda 表达式、智能指针、并发支持、移动语义、nullptr 和更强大的模板功能等。 |
2014年 | C++14 | 作为 C++11 的小幅度更新,C++14 引入了一些改进和新特性,包括泛型 Lambda 表达式、返回类型推导、二进制字面量、数字分隔符、弃用属性等。 |
2017年 | C++17 | 这个版本进一步提升了 C++ 的功能和易用性,新功能不是很多,引入了结构化绑定、if constexpr、std::optional、std::variant、std::string_view、并行算法等特性。 |
2020年 | C++20 | 是继 C++11 之后又一个重大更新,引入了概念(concepts)、范围库(ranges)、协程(coroutines)、模块(modules)、三元运算符的改进、constexpr 的增强、std::span 等新特性。 |
2023年 | C++23 | 是 2023 年 7 月份刚确定下的新标准,目前能完整支持 C++23 的编译器基本没有。变化包括引入标准库的模块化支持、扩展 constexpr 、增加并行算法、ranges 扩展、this 推导、引入更多的属性和注解、增加 std::mdspan、std::generator 等新特性。 |
2026年 | C++26 | 制定中 |

C++一直被诟病的一个地方就是一直没出网络库(networking),networking之前是在C++23的计划中的,现在C++23已经发布了,但是并没有networking,网上引发了一系列的吃瓜和吐槽。 中间过程就像发生了宫斗剧一样😂😂😂😂😂。

https://legacy.cplusplus.com/reference/
https://zh.cppreference.com/w/cpp
https://en.cppreference.com/w/
说明: 第一个链接不是C++官方文档,标准也只更新到C++11,但是以头文件形式呈现,内容比较易看好懂。后两个链接分别是C++官方文档的中文版和英文版,信息很全,更新到了最新的C++标准,但是相比第一个不那么容易看;几个文档各有优势,我们结合着使用。
TIOBE排行榜是根据互联网上有经验的程序员、课程和第三方厂商的数量,并使用搜索引擎(如Google、Bing、Yahoo!)以及Wikipedia、Amazon、YouTube和Baidu(百度)统计出排名数据,只是反映某个编程语言的热门程度,并不能说明一门编程语言好不好,或者一门语言所编写的代码数量多少。
2024年9月TIOBE发布的编程语言排行榜


C++的应用领域在服务器端、游戏(引擎)、机器学习引擎、音视频处理、嵌入式软件、电信设备、金融应用、基础库、操作系统、编译器、基础架构、基础工具、硬件交互等很多方面都有。

首先第一个问题,C++难学吗?先在这里告诉大家C++是一个相对难学难精的语言,相比其他一些语言,学习难度要高一些要陡峭一些,这里有历史包袱的问题,也有语言本身设计和发展历史的问题。网上以前一直流传下面这个21天内自学精通C++的梗。😂😂😂

初学 C++,除了学习基本的概念(比如变量、指针、引用)之外,一定要多上手敲代码练习、熟能生巧,还要能熟练地 debug 自己的程序,为以后开发更复杂的项目打好基础。

C++兼容C语言绝大多数的语法,所以C语言实现的hello world依旧可以运行,C++中需要把定义文件代码后缀改为.cpp,vs编译器看到是.cpp就会调用C++编译器编译,linux下要用g++编译,不再是gcc
// test.cpp
#include<stdio.h>
int main()
{
printf("hello world\n");
return 0;
}当然C++有一套自己的输入输出,严格说C++版本的hello world应该是这样写的。
// test.cpp
// 这里的std,cout等我们都看不懂,没关系,以后的内容会依次讲解
#include<iostream>
using namespace std;
int main()
{
cout << "hello world\n" << endl;
return 0;
}今天的分享到这里就结束啦!如果觉得文章还不错的话,可以三连支持一下。
也可以点点关注,避免以后找不到我哦!