2

OpenFoam ソース コードのメソッドbool Foam::pimpleControl::criteriaSatisfied()で、次の式を見つけました。

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

iter()私が見つけたもの: Foam::label iter()const inline 現在のクラウド反復への const アクセスを返す

の場合keyword():

keyType& keyword() inline キーワードへの非 const アクセスを返します。

これについて 2 つの質問があります。

  1. のようなメソッドでメソッドを呼び出すとはどういう意味iter().keyword();ですか?

  2. &afterword&またはとはどういうkeyType&意味ですか? すべてのメソッドにも datatyp 宣言があることは知っていますが&、特定の意味がありますか?

ご挨拶ストレート

4

2 に答える 2

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 に答える