2

bool Foam::pimpleControl::criteriaSatisfied()在OpenFoam Source Code的方法中,我找到了以下表达式:

bool Foam::pimpleControl::criteriaSatisfied()
{
    // ...
    const word& variableName = iter().keyword();
    // ...
}

对于iter()我发现: Foam::label iter()const inline 返回对当前云迭代的 const 访问

对于keyword()

keyType& keyword() inline 返回对关键字的非常量访问。

我对此有两个问题:

  1. 在类似的方法上调用方法是什么意思iter().keyword();

  2. &是什么意思word&keyType&我知道每个方法也有一个 datatype 声明,但是有&特定的含义吗?

问候街

4

2 回答 2

4

在方法上调用方法时是什么意思iter().keyword();

iter()返回一个对象。keyword()然后调用该对象的方法。它基本上只是Foam::label temp = iter(); temp.keyword().

word& 或 keyType& 后面的 & 是什么意思?

& 号是类型的一部分。const word&将类型命名为“对”的引用const word

于 2013-10-28T18:58:43.387 回答
1

您不是在调用“方法上的方法”。“iter()”返回一个对象,该对象有一个成员“keyword()”。

代码相当于

Foam::label& it = iter();
it.keyword();

这是一个简化的示例:

class A {
    int m_i;
public:
    A(int i) : m_i(i) {}
    int GetI() const { return m_i; }
};

class B {
    A m_a;
public:
    B(int i) : m_a(i) {}
    const A& GetA() const { return m_a; }
};

#include <iostream>

int main() {
    B b(42);

    const A& a = b.GetA();
    std::cout << "a.GetI() == " << a.GetI() <<std::endl;

    // above code is directly equivalent to:
    std::cout << "b.GetA().GetI() == " << b.GetA().GetI() <<std::endl;
}

在最后一行,“b.GetA()”返回一个临时的、匿名的“const A&”对象,然后我们在该对象上调用“GetI()”。

于 2013-10-28T18:59:50.707 回答