1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35 |
// enum 과
// 연산자 중복
#include <iostream>
using namespace std;
typedef enum color { RED, WHITE, GREEN } color;
typedef enum days {SUN, MON, TUE, WED, THU, FRI, SAT} days;
// 연산자 중복
inline days operator++(days& d) { return d = static_cast<days>((static_cast<int>(d) + 1) % 7); }
ostream& operator<<(ostream& out, const days d)
{
switch (d) {
case SUN: out << "SUN"; break;
case MON: out << "MON"; break;
case TUE: out << "TUE"; break;
case WED: out << "WED"; break;
case THU: out << "THU"; break;
case FRI: out << "FRI"; break;
case SAT: out << "SAT"; break;
}
return out;
}
int main()
{
days d = SUN;
cout << d << endl; // SUN
++d; // MON
cout << ++d << endl; //TUE
days e = MON;
cout << ++e << endl; // TUE
|
cs |
11번째 줄 연산자 중복에 주목할 것
inline days operator++(days d)
라고 하면, ++d 할 때 d 값이 바뀌지 않음. 그래서 참조형으로 선언하고 return d = ... 이라고 써준 것임
beeeye dmu
'C++' 카테고리의 다른 글
C++ 입출력시스템 정리 (0) | 2016.07.05 |
---|---|
STL vector와 sort (0) | 2016.07.05 |
STL vector의 사용법 (0) | 2016.07.04 |
Template를 사용한 swap 함수 (0) | 2016.07.04 |
C++ 출력 포맷 (0) | 2016.07.02 |