OpenFOAM中在进行场计算时,涉及大量内存占用量很大的对象的操作,如果对于这些对象均采用“按值”操作而不是“按址”操作那就会造成大量内存耗用,导致程序效率的降低。C++中引用的概念解决了这一问题,但是同时也带来另一个问题就是关于引用计数的问题,同一对象被多重引用所指,那么对于引用个数的跟踪就显得很重要,因为如果依然有引用指向该对象时是不能进行该对象的析构的,因而需要跟踪大内存对象的引用个数,这就出现了引用计数的概念。
可惜在STL中并没有提供引用计数这样的类,因而在OpenFOAM中编写了refCount类用于实现该功能,需要进行引用计数的类只要派生自refCount,结合另一特定的模板类tmp<T>便可实现引用计数的功能。这里需要注意的是refCount的派生类必须要封锁复制构造函数及赋值操作符函数。
评论