구조체란 하나이상의 자료형을 묶어서 새로운 자료형으로 정의하여 사용하는 자료형입니다.
C언어의 구조체는 데이터만 정의할 수 있지만, C++에서는 데이터와 함수를 함께 정의할 수 있다.
#include <iostream>
using namespace std;
typedef struct _counter {
int value;
void reset() {
value = 0;
}
void count() {
value++;
}
int getValue() {
return value;
}
} Counter;
int main() {
Counter counter = { 0 }; // 생성시 0으로 초기화
counter.count(); // 1증가
counter.count();
cout << counter.getValue() << endl; // 현재값 출력
counter.count();
counter.count();
cout << counter.getValue() << endl;
counter.reset(); // 0 으로 초기화
cout << counter.getValue() << endl;
return 0;
}
main.cpp 파일의 내용을 다음과 같이 구분하여 작성한다.
#include <iostream>
using namespace std;
typedef struct _counter {
int value;
void reset();
void count();
int getValue();
} Counter;
void Counter::reset() {
value = 0;
}
void Counter::count() {
value++;
}
int Counter::getValue() {
return value;
}
(...)
이렇게 구분하여 작성하는 것은 헤더파일과 소스코드로 구분하여 작성할 수 있다.
#ifndef __COUNTER_H__
#define __COUNTER_H__
typedef struct _counter {
int value;
void reset();
void count();
int getValue();
} Counter;
#endif
#include "Counter.h"
void Counter::reset() {
value = 0;
}
void Counter::count() {
value++;
}
int Counter::getValue() {
return value;
}
#include <iostream>
#include "Counter.h"
using namespace std;
int main() {
Counter counter = { 0 }; // 생성시 0으로 초기화
counter.count(); // 1증가
counter.count();
cout << counter.getValue() << endl; // 현재값 출력
counter.count();
counter.count();
cout << counter.getValue() << endl;
counter.reset(); // 0 으로 초기화
cout << counter.getValue() << endl;
return 0;
}