以下代码示例的含义

时间:2013-10-31 17:18:12

标签: c++ variables object

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

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

如果我在开头是正确的,则会创建类mesh的对象fvMesh。这个连接中的以下代码是什么意思? (以示例中的?开头)

问候 Streight

2 个答案:

答案 0 :(得分:2)

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

Type obj
(
   Type2(
     X,
     Y
   )
);

Type obj( Type2( X, Y ) );

这意味着创建Type2的临时对象并将其传递给Type的构造函数。

答案 1 :(得分:2)

这对我来说就像一个相当复杂的对象构造。

考虑fvMesh的构造函数是否如下所示:

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

并且IOobject的构造函数依次为:

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

构造类型为mesh的名为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));

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