注册 登录
流体中文网 返回首页

bioExplore的个人空间 http://www.cfluid.com/?4654 [收藏] [复制] [分享] [RSS]

日志

IOobject类对象的构建

已有 792 次阅读2009-3-12 09:54

一个IOobject是如何构造的

简单描述:在OF的各种类的构造中都涉及到IOobject的构造,因而这里对其构造进行一个详细的分析。其实单纯从IOobject类构造函数的组织来看是非常简单的,它的所有工作都是在初始化列表中进行的

IOobject类为一个对象定义属性并且提供一个隐含的objectRegistry管理器,并为流输入输出提供基础。其构造由一个对象名,一个类名,一个实例路径,一个objectRegistry的引用,以及相应的表明存储状态的参数。

 

该类具有10个私有变量

      word       name_;                                                          

      word       headerClassName_;                                               

      string     note_;                                 

      word       instance_;                             

      fileName       local_;                                

      const objectRegistry&      db_;                           

      readOption rOpt_;                                 

      writeOption    wOpt_;                                 

      bool       registerObject_;                           

      objectState    objState_;                             

 

其中headerClassName_,note_,objState_等三个成员变量在构造时是无需显式给出的

    :

    headerClassName_在构造时就是IOobject运行时类别的typeName的值对于IOobject对象来说即IOobject,

    note_在构造时空缺,

    objState_构造时都是GOOD。

因而这三个变量在构造时可无需通过构造参数给出,另外还有三个在构造函数的参数中都提供了默认值,

    rOpt_=NO_READ,                                     

    wOpt_=NO_WRITE,                                

    registerObject_=true.                            

local_有时在构造时也可以保持为空这样就衍生出了该类目前所提供的两个构造函数:

 

其中一个构造函数含有六个形参,这六个参数及其对应的成员变量名分别为:

    const word& name-->name_,                              

    const word& instance-->instance_,                          

    const objectRegistry& registry-->db_,                      

    readOption ro-->rOpt_,                             

    writeOption wo-->wOpt_,                            

    bool registerObject-->registerObject_                      

而另外一个构造函数除提供上述六个形参外,还提供了:

    cosnt fileName& local-->local_

因此在构造一个IOobject的对象时最少只用提供三个实参,用来指出name_,instance_和db_;

 

例如

    IOobject                                       

    (                                          

       "T",                                        

       runTime.timeName(),                            

       mesh,                                   

       IOobject::MUST_READ,                            

       IOobject::AUTO_WRITE                            

    )                                        

这段代码将构造一个IOobject的对象该对象的名字(name_)"T",实例路径instance_runTime的当前时间值表示的文件夹对象注册器objectReistrymesh,读选项(rOpt_)MUST_READ,写选项(wOpt_)AUTO_WRITE其余的五个成员变量的取值如下

    local_();                                      

    headerClassName_(IOobject);                            

    note_();                                       

    objState_(GOOD);                                   

    registedObject_(true);                             

 

评论 (0 个评论)

facelist doodle 涂鸦板

您需要登录后才可以评论 登录 | 注册

返回顶部