-1

我需要知道以下源代码的含义:

Foam::fvMesh mesh                               //object mesh of class fvMesh 
(
    Foam::IOobject                              // ?
    (
        Foam::fvMesh::defaultRegion,
        runTime.timeName(),
        runTime,
        Foam::IOobject::MUST_READ
    )

如果我一开始是正确的,就会创建mesh类的对象。fvMesh下面这段代码是什么意思?(在示例中以 ? 开头)

问候街

4

2 回答 2

3

这在我看来是一个相当复杂的对象构造。

考虑 for 的构造函数是否fvMesh看起来像这样:

class fvMesh
{
  fvMesh (const IOobject& obj);
};

而 for 的构造函数IOobject又如下所示:

class IOobject
{
  IOobject (Region, string, time, flag);
};

构造一个名为meshtype的变量fvMesh类似于:

IOobject temp (Foam::fvMesh::defaultRegion,runTime.timeName(),runTime, Foam::IOobject::MUST_READ);

Foam::fvMesh mesh(temp);

但是由于fvMesh构造函数采用 const 引用,您也可以将它传递给一个临时IOobject的,即时构造然后丢弃:

Foam::fvMesh mesh(IOobject(Foam::fvMesh::defaultRegion,runTime.timeName(),runTime, Foam::IOobject::MUST_READ));

这与您发布的代码相同,只是您的代码有一些额外的空格。

于 2013-10-31T17:25:20.103 回答
2

它的格式很奇怪,但它只是一个通过调用构造函数初始化的对象,该构造函数接受另一个对象。

Type obj
(
   Type2(
     X,
     Y
   )
);

Type obj( Type2( X, Y ) );

这意味着Type2创建一个临时对象并将其传递给Type.

于 2013-10-31T17:20:53.740 回答