본문 바로가기

C++

C++ 토막 지식(19.01.14) - struct, enum

Struct


구조체(Structure)은 간단한 변수들의 모음이다. 어떠한 자료형도 구조체에 들어올 수 있으며, 구조체 그 자체나 사용자가 만든 자료형도 들어올 수 있다. 구조체에 들어간 아이템을 구조체의 멤버(member)라고 부른다.


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
struct part //specify a structure
{
int modelnumber; //ID number of widget
int partnumber; //ID number of widget part
float cost; //cost of part
};
 
int main()
//initialize variable
part part1 = { 6244373217.55F };
part part2; //define variable
//display first variable
cout << “Model “ << part1.modelnumber;
cout << “, part “ << part1.partnumber;
cout << “, costs $” << part1.cost << endl;
 
part2 = part1; //assign first variable to second
 
//display second variable
cout << “Model “ << part2.modelnumber;
cout << “, part “ << part2.partnumber;
cout << “, costs $” << part2.cost << endl;
return 0;
}
// Model 6244, part 373, costs $217.55
// Model 6244, part 373, costs $217.55

cs


part1 을 part 2에 assign 하는 부분이 있다. 이렇게 하면 part1의 멤버가 그와 같은 이름을 가진 part2의 멤버에 대입된다. 다만 이러한 것은 같은 동일한 struct 에서 만든 변수일 때만 가능하다. 


하지만 part3 = part1 + part2 와 같은 연산은 안된다. C++ 내재된(built-in) 자료형에 대해서만 연산이 가능하기 때문이다.  연산자 오버로딩을 통해서 가능하다. 


struct를 포함하고 있는 struct 를 nested struct 라고 하는데, 이것을 초기화하기 위해서는 Room dining = { {13, 6.5}, {10, 0.0} }; 와 같이 이중 중괄호를 사용하면 된다. (Room 은 두 개의 멤버가 있고, 각 멤버는 또 두 개의 멤버가 있는 상황임.)


Enum


enum 은 미리 어떤 값이 들어갈지 알 수 있을 때 사용할 수 있다. (days, month 등)


enum 에서 처음 값을 설정해주면 그 다음부터는 그 수로부터 오름차순으로 할당된다. enum Suit { clubs=1, diamonds, hearts, spades }; 이라고 하면 diamonds 는 2, hearts 는 3이 할당된다.