## 優點
沒有頭文件
聲明實現仍然可分離, 但非必要
可以顯式指定那些導出(類, 函數等)
不需要頭文件重復引入宏 (include guards)
模塊之間名稱可以相同不會沖突
模塊只處理一次, 編譯更快 (頭文件每次引入都需要處理)
預處理宏只在模塊內有效
模塊引入順序無關緊要
創建模塊
```
// cppcon.cpp
export module cppcon;
namespace CppCon {
auto GetWelcomeHelper() { return "Welcome to CppCon 2019!"; }
export auto GetWelcome() { return GetWelcomeHelper();}
}
引用模塊
// main.cpp
import cppcon;
int main(){
std::cout << CppCon::GetWelcome();
}
```
import 頭文件
import
隱式地將 iostream 轉換為模塊
加速構建, 因為 iostream 只會處理一次
和預編譯頭 (PCH) 具有相似的效果
- C++基礎
- 什么是 POD 數據類型?
- 面向對象三大特性五大原則
- 低耦合高內聚
- C++類型轉換
- c++仿函數
- C++仿函數了解一下?
- C++對象內存模型
- C++11新特性
- 智能指針
- 動手實現C++的智能指針
- C++ 智能指針 shared_ptr 詳解與示例
- 現代 C++:一文讀懂智能指針
- Lamda
- c++11多線程
- std::thread
- std::async
- std::promise
- std::future
- C++11 的內存模型
- 初始化列表
- std::bind
- std::tuple
- auto自動類型推導
- 可變參數模板
- 右值引用與移動語義
- 完美轉發
- 基于范圍的for循環
- C++11之POD類型
- std::enable_if
- C++14/17
- C++20
- 協成
- 模塊
- Ranges
- Boost
- boost::circular_buffer
- 使用Boost.Asio編寫通信程序
- Boost.Asio C++ 網絡編程
- 模板
- 模板特化/偏特化
- C++模板、類模板、函數模板詳解都在這里了
- 泛化之美--C++11可變模版參數的妙用
- 模板元編程
- 這是我見過最好的模板元編程文章!