C ++中方法的调用方法

时间:2013-10-28 18:52:48

标签: c++

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

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

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

keyword()

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

我有两个问题:

  1. iter().keyword();等方法上调用方法时意味着什么?

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

  3. 问候Streight

2 个答案:

答案 0 :(得分:4)

  

iter().keyword();

等方法上调用方法时意味着什么

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

  

什么&字后&或keyType&意思?

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

答案 1 :(得分: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&amp;”对象,然后我们在该对象上调用“GetI()”。