본문 바로가기

C++

enum 과 연산자 중복의 예

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 << ++<< 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