私は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型湿度)関数が呼び出されますか?どんな助けもありがとう。
を何これらの関数は呼び出されると思うのですか? –
これらの関数は呼び出されません。 – SolaGratia
値10と12は、関数が呼び出されたと思うようになる出力です。コンストラクタについては、私はコンストラクタを使用したい場合は、関数名とクラス名は同じでなければなりません。最初に変数に0を代入するためにはトラクターが使われますが、10と12がどのように割り当てられるのでしょうか? – Rashik