2016-03-28 13 views
-1

私はC++を学んでいますが、最近、コードのパブリックメンバ関数が自動的に呼び出されるコードが見つかりました.iコンストラクタに関する一般的な考え方はありますが、 ;ここクラスの自動呼び出しメンバ関数

は、コードは次のとおりです。

#include <iostream> 
using namespace std; 
class Humidity; 
class Temperature 
{ 
private: 
    int m_temp; 
public: 
    Temperature(int temp=0) 
    { 
     m_temp = temp; 
    } 
    void seTemperature(int temp) 
    { 
     m_temp = temp; 
    } 
    friend void printWeather(const Temperature &temperature, 
          const Humidity &humidity); 
}; 
class Humidity 
{ 
private: 
    int m_humidity; 
public: 
    Humidity(int humidity=0) 
    { 
     m_humidity = humidity; 
    } void seHumidity(int humidity) 
    { 
     m_humidity = humidity; 
    } friend void printWeather(const Temperature &temperature, 
           const Humidity &humidity); 
}; 
void printWeather(const Temperature &temperature, const Humidity &humidity) 
{ 
    std::cout << "The temperature is " << temperature.m_temp <<" and the humidity is " << humidity.m_humidity << '\n'; 
} 
int main() 
{ 
    Humidity hum(10); 
    Temperature temp(12); 
    printWeather(temp, hum); 
    return 0; 
} 

私の質問をされていること:なぜボイドseTemperature(int型の温度)とseHumidity(int型湿度)関数が呼び出されますか?どんな助けもありがとう。

+1

を何これらの関数は呼び出されると思うのですか? –

+0

これらの関数は呼び出されません。 – SolaGratia

+0

値10と12は、関数が呼び出されたと思うようになる出力です。コンストラクタについては、私はコンストラクタを使用したい場合は、関数名とクラス名は同じでなければなりません。最初に変数に0を代入するためにはトラクターが使われますが、10と12がどのように割り当てられるのでしょうか? – Rashik

答えて

0

この例では、2つの関数が呼び出されていません。これを参照してください。http://cpp.sh/8te7

しかし、コンストラクタ(Humidity(int)は、二つのクラスのTemperature(int)が呼び出されていると、彼らは何かをやっているし、彼らはあなたが言及した二つの機能(seHumidityseTemperature)に似た何かをやっている

+0

ありがとう、私はポイントを持っている.. – Rashik

関連する問題