2013-10-28 129 views
2
在OpenFoam源代码的方法 bool Foam::pimpleControl::criteriaSatisfied()

我发现了以下表达式:上调用方法的方法在C++

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

对于iter()我发现: Foam::labeliter() const的直列 返回常量与当前云迭代访问

对于keyword()

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

我对这个两个问题:

  1. 呼吁像iter().keyword();方式方法时,是什么意思?

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

问候Streight

+1

“泡沫::标签ITER()const的直列返回常量访问当前云迭代” - 再说一遍? – 0x499602D2

回答

4

的方法调用方法时一样iter().keyword();

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

后字&或关键字类型&意味着什么呢&?

和符号是类型的一部分。 const word&名称类型“参考const word”。

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()” 返回一个临时的,匿名 “常量甲&”对象,然后我们在该对象上调用“GetI()”。

+0

THX的例子,我只是给对方的回答已解决的标志,因为它首次出现,也回答了我的问题。 – Streight