OpenFOAM 中的 RTS 实现,使用了很多宏定义展开,所以不容易理解。不过,也有分析文章,用了简单的例子,分析了编译展开后的代码,应该是说得比较好的。
http://xiaopingqiu.github.io/2016/03/12/RTS1/
可以顺序读,也可先看后面,再读前面,或者来回看看。
RTS 相当于一个类工厂,所以需要先了解类工厂的机制,也有说得很明白的文章,如下:
Factory Pattern in C++:
https://www.codeproject.com/articles/363338/factory-pattern-in-cplusplus
由于宏用得很花,所以必须了解##等的用法,下面文章的“3.宏的单行定义”部分,可以参考:
C++中 #define的用法 _自由无限-CSDN博客_c++ definekk
又查了一下OpenFOAM的官方文档,如下: