第7章: 编译期编程
概述
编译期编程让编译器在程序运行之前对表达式、函数和对象进行求值。 这可以通过提前捕获错误、避免不必要的运行时工作, 来提升安全性、正确性和性能。
在本章中,你将学到 C++ 中编译期编程的核心工具:
constexpr函数constexpr对象if constexprif constevalconstinitconsteval
这些特性让你能编写依上下文可在编译期或运行时执行的代码, 而在某些情况下它必须在编译期执行。
目录
开始之前你应该知道的
本章假定你已经理解:
- 基本函数(第6章)
- 变量与初始化
- 编译期与运行时的区别
不需要模板、类或高级元编程。所有示例都使用简单、实用的 C++。
为什么编译期编程重要
- 安全性:错误被更早捕获
- 性能:在编译期完成的工作不会在运行时重复
- 正确性:不变量可以在程序运行之前就被强制
- 清晰性:当某些东西必须在编译期已知时,意图更显式
现代 C++ 鼓励在能让代码更清晰、更安全时使用编译期特性, 而不是为了炫技。