2013-10-28 131 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