Witam.
Podam przykład kodu z książki, ponieważ nie rozumiem jednej definicji metody.
To plik nagłówkowy:
#ifndef MYTIME_H_
#define MYTIME_H_
class Time
{
private:
int hours;
int minutes;
public:
Time();
Time(int h, int m = 0);
void AddMin(int m);
void AddHr(int h);
void Reset(int h = 0, int m = 0);
Time Sum(const Time & t) const;
void Show() const;
};
#endif // MYTIME_H_
To plik z metodami klasy Time:
#include <iostream>
#include "mytime0.h"
Time::Time()
{
hours = minutes = 0;
}
Time::Time(int h, int m)
{
hours = h;
minutes = m;
}
void Time::AddMin(int m)
{
minutes += m;
hours += minutes / 60;
minutes %= 60;
}
void Time::AddHr(int h)
{
hours += h;
}
void Time::Reset(int h, int m)
{
hours = h;
minutes = m;
}
Time Time::Sum(const Time & t) const
{
Time sum;
sum.minutes = minutes + t.minutes;
sum.hours = hours + t.hours + sum.minutes / 60;
sum.minutes %= 60;
return sum;
}
void Time::Show() const
{
std::cout << hours << " godzin, " << minutes << " minut";
}
Moje pytanie dotyczy zapisu: Time Time::Sum(const Time & t) const. Co ten zapis oznacza? Time::Sum rozumiem, chodzi tu o to, że funkcja o nazwie Sum odnosi się do klasy Time. Jednak co oznacza dodatkowy zapis Time przed nazwą tej metody oraz Time w nawiasie, gdzie się podaje argumenty. & t oznacza referencje, mam racje? const użyte w nawiasie mówi, że parametr t jest stały. Oraz co oznacza const zastosowane na końcu tej metody?