Time.h
#ifndef TIME
#define TIME
#include <iostream>
using namespace std;
class Time {
private:
int hour;
int min;
public:
Time();
Time(int, int);
void addHour(int);
void addMin(int);
Time operator+(Time&); // ver2 연산자 오버로딩 안 썼을 때 Time sum(Time&);
Time operator*(int); // t * n
friend Time operator*(int n, Time& t) { // friend, n * t
return t * n; // n * t는 t * n으로 변환 후 Time operator*(int)을 사용
};
void show();
~Time();
};
#endif
함수 c++ 파일
#include "Time.h"
Time::Time() {
hour = min = 0;
}
Time::Time(int h, int m) {
hour = h;
min = m;
}
void Time::addHour(int h) {
hour += h;
}
void Time::addMin(int m) {
min += m;
hour += min / 60;
min %= 60;
}
Time Time::operator+(Time& t) { // ver2 Time Time::sum(Time& t)
Time rst;
int rstMin = (hour + t.hour) * 60 + min + t.min;
rst.hour = rstMin / 60;
rst.min = rstMin % 60;
return rst;
}
Time Time::operator*(int n) {
Time rst;
int rstMin = hour * n * 60 + min * n;
rst.hour = rstMin / 60;
rst.min = rstMin % 60;
return rst;
}
//Time operator*(int n, Time& t) { // friend
// Time rst;
// int rstMin = t.hour * n * 60 + t.min * n;
// rst.hour = rstMin / 60;
// rst.min = rstMin % 60;
// return rst;
//}
void Time::show() {
cout << hour << " : " << min << endl;
}
Time::~Time() {
}
메인 c++ 파일
#include "Time.h"
int main() {
Time t1(1, 50);
Time t2(2, 40);
t1.show();
t2.show();
cout << endl;
Time rst;
rst = t1 + t2; // t1.operator+(t2); (-, *, /, % 도 똑같이 하면 사용 가능)
// ver2 t1.sum(t2);
cout << "<더한 시간>\n";
rst.show();
cout << endl;
int a = 1 + 3;
cout << "기본 덧셈 1 + 3 = " << a << endl <<endl;
rst = t1 * 2; // t1.operator*(2);
cout << "<t1 * 2 계산 후 시간>\n";
rst.show();
rst = 2 * t1; // rst = operator*(2, t1);, friend
cout << "<2 * t1 계산 후 시간>\n";
rst.show();
a = 1 * 3;
cout << "\n기본 곱셈 1 * 3 = " << a << endl;
return 0;
}
<출력>
1 : 50
2 : 40
<더한 시간>
4 : 30
기본 덧셈 1 + 3 = 4
<t1 * 2 계산 후 시간>
3 : 40
<2 * t1 계산 후 시간>
3 : 40
기본 곱셈 1 * 3 = 3
728x90
'c++ 기초' 카테고리의 다른 글
26) 상속, 다형 상속 (0) | 2025.01.06 |
---|---|
25) 출력 연산자(<<) 오버로딩 (0) | 2025.01.06 |
23) 클래스 배열 (0) | 2025.01.05 |
22) this 포인터 (0) | 2025.01.04 |
21) 생성자, 소멸자 (0) | 2025.01.04 |