在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访问。
我有两个问题:
在iter().keyword();
等方法上调用方法时意味着什么?
&
或word&
之后的keyType&
是什么意思?我知道每个方法都有一个datatyp声明,但&
具有特定含义吗?
问候Streight
答案 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()”。