本系列文章不适合第一次学习编程的初学者,建议的门槛是已学过一次 C++、具备半年以上的编程经验,且特别适合凡事喜欢追根究底、想了解所写的每行代码究竟发生何事的读者。行文不会考虑相关名词出现的先后顺序,若对 C++ 基本名词与观念不熟悉,阅读本系列文章可能有些困难。不过,就算某部分暂时看不懂也无妨,先跳过就好,毕竟咱们又不是在考试划重点。
文章内容包含目前最新的 C++17 标准,对每个主题皆进行完整且深入的探讨,行文中尽量避免使用艰深的词汇,但术语会大量使用英文原文,斟酌再三,熟悉这些英文名词,对读者日后接触更难的原文书籍帮助较大。
连载时间不定,每篇文章皆花费笔者大量时间撰写,刊出频率端看平日工作是否忙碌,拖稿几乎是家常便饭。C++ 博大精深,若笔者有幸能完成此系列文章,实为万幸。
恕不回答任何与学校教学或作业相关的问题,也不帮忙解 bug、写作业。
运行环境
范例程序,皆是在 Oracle VM VirtualBox 上,安装 Ubuntu 18.04 LTS 64-bit 操作系统,选用 GCC 与 Clang 进行编译。
GNU Compiler Collection (GCC)
官方网站:http://gcc/gnu.org/
GCC 在许多 Unix-like 的操作系统上,是系统自带的 compiler。1985 年由 Richard Stallman 领头发展,原先的目的,是提供一个免费的 C compiler。1987 年 3 月 22 日在 MIT 的 FTP 发布了第一个版本,随后逐渐加入对 C++、Fortran、Objective-C 等语言的支持。目前由 Free Software Foundation (FSF) 维护,并以 GNU General Public License (GNU GPL) 许可证发布。
GCC 目前仍是处于积极开发中,每个几月就有新版本发布,不断支持语言新特性。
Ubuntu 18.04 默认安装的版本是 7.3:
sora@sora-VirtualBox:~$ gcc --version gcc (Ubuntu 7.3.0-16ubuntu3) 7.3.0 Copyright (C) 2017 Free Software Foundation, Inc. This is free software; see the source for copying conditions. There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
执行下面指令,能将 GCC 更新到最新版本,且最后一个指令,让系统默认的 gcc、g++ 指令使用最新版本:
sora@sora-VirtualBox:~$ sudo add-apt-repository ppa:ubuntu-toolchain-r/test -y sora@sora-VirtualBox:~$ sudo apt-get update sora@sora-VirtualBox:~$ sudo apt-get install gcc-snapshot -y sora@sora-VirtualBox:~$ sudo apt-get update sora@sora-VirtualBox:~$ sudo apt-get install gcc-8 g++-8 sora@sora-VirtualBox:~$ sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-8 60 --slave /usr/bin/g++ g++ /usr/bin/g++-8
最后可以做个检查。本例中,GCC 已经更新到 8.1:
sora@sora-VirtualBox:~$ gcc --version gcc (Ubuntu 8.1.0-1ubuntu1) 8.1.0 Copyright (C) 2018 Free Software Foundation, Inc. This is free software; see t