现代 C++新特性;C++模块化问题

现代 C++新特性

  1. c++20 带来的核心语言特性变更
  • 模块化编程 Modules
  • 泛型编程 Concepts
  • 异步复杂性 Coroutines

  1. 重要库变更
  • 面向数据序列的函数式编程
  • 格式化输出的 format 标准
  • 新 bit 操作库 Bit libary

  1. 现代 c++标准演进
  • c++23、26

C++模块化问题

在以往,c++中为了隐藏代码细节,解决符号冲突,采用了许多的方法。 包括头文件机制、添加前缀、namespace等。 但是这也带来了很多问题,例如头文件机制会导致模块划分模糊、依赖符号顺序错乱使得合作项目难以进行、编译效率变低等问题。 像添加前缀这种方法也会导致代码冗长难以维护、可读性变差等问题,这也不是很好的解决方案。 最后是我们常常会为了方便大量使用 using namespace 来简化后续代码的编写工作,如果在这些库中含有与程序中定义的全局实体同名的实体,或者不同库之间有同名的实体,在编译时会出现名字冲突。如果在头文件中使用了 using namespace,甚至会导致所有直接或间接包含了该头文件的代码都受到影响,产生不可预计的后果。