본문으로 바로가기

[C++]C++의 용어 정의와 파일 분할

category 프로그래밍/C++ 2017. 6. 16. 00:22
728x90
반응형

안녕하세요. letitkang입니다.


포스팅 시작 하겠습니다. '윤성우의  C++ 열혈강의'를 보고 있습니다.


 

 

 



오늘은 C++에서 자주사용하는 용어를 정의하고, C++에서의 파일 분할에 대해 알아보겠습니다.


1. 용어 정의


설명에 편한 용어에 대해 정의를 하려고 합니다.


C++에서는 구조체 변수, 클래스 변수라는 표현을 어울리지 않습니다.


왜냐하면 성격적으로 의미가 다르기 때문입니다.


그래서 이제는 변수라는 표현 대신에 ' 객체 or Object'라고 표현을 사용합니다.


"객체란 무엇인가? 객체라고 왜 부르는가?" 에 대한 대답을 해보겠습니다.


Car라는 클래스를 정의 해 보겠습니다.



Class Car

{

private:

char carID[ID_LEN];

int gasGuage;

int carSpeed;

public:

void Init(char * ID, int gas);

void ShowCarSate();

void Accel();

void Break();

}



여기서 car은 '변수'가 아닌 '객체'라고 정의를 할 것입니다.


그리고 클래스를 구성하는 클래스 내의 변수는 '멤버 변수', 클래스를 구성하는 클래스 내의 함수는 '멤버 함수'라고 부를 것입니다.


즉, Car 클래스를 구성하는 멤버변수와 멤버함수는 다음과 같습니다.


멤버변수


-char carID[ID_LEN];

-int gasGuage;

-int carSpeed;


멤버함수


-void Init(char * ID, int gas);

-void ShowCarSate();

-void Accel();

-void Break();


멤버는 해석해보면 구성원이라는 의미를 담고 있습니다.


그래서 클래스를 구성하는 변수와 함수에 각각 '멤버변수', '멤버함수'라는 이름을 정의한 것입니다.


 

 

 



2. 파일분할


보통의 프로그램을 만들때 하나의 파일에 모든 것을 담지 않고, 파일을 분할 합니다. 당연한 이야기죠.


C와는 다르게 C++은 클래스 별로 헤더파일과 소스파일을 생성하여 클래스의 선언, 정의를 구별하기 때문에, 많은 수의 헤더파일과 소스파일이 만들어집니다.


지금부터 클래스를 기준으로해서 파일을 나누는 기준을 알아보겠습니다.


먼저 C언어에서의 파일분할에 대해 아래에서 복습해보겠습니다.



1. 헤더파일의 역할을 알고 있다.

2. 헤더파일에 들어가야할 내용을 구분할 수 있다.

3. 헤더파일의 중복을 막기 위해서 사용하는 매크로 #ifndef, #endif를 알고 있다.

4. 둘 이상의 파일을 컴파일해서 하나의 실행파일을 만드는 법을 알고 있다.

5. Linker가 하는 일을 알고 있다.



허나 위의 내용을 다 알고 있지 못하더라도, 내용을 이해하는데 크게 무리는 없을 것입니다.


그럼 지금부터 설명 들어가겠습니다.


C++은 보통 클래스별로 파일을 나눌 때, 아래와 같이 파일을 구분합니다.



Car.h -> 클래스의 선언이 담겨 있다.

Car.cpp -> 클래스의 정의(멤버 함수의 정의)가 담겨있다.



그럼 Car 클래스의 대한 예시를 들어보겠습니다.



Class Car

{

private:

char carID[ID_LEN];

int gasGuage;

int carSpeed;

public:

void Init(char * ID, int gas);

void ShowCarSate();

void Accel();

void Break();

}



이것이 제일 기본적인 클래스의 틀입니다.


이를 가리켜서 '클래스 선언(declaration)'이라고 합니다.


즉, 클래스 Car가 제대로 된 것인지 판단하는데 사용합니다.


다음은 클래스의 정의를 살펴보겠습니다.


아래와 같이 다른 문장의 컴파일에 필요한 정보를 가지고 있지 않고, 정의만 되어 있는것이 바로 '클래스 정의(definition)'입니다.


void Init(char * ID, int gas) { ... }

void ShowCarSate()  { ... }

void Accel()  { ... }

void Break()  { ... }


 

 



마지막으로 정리를 해보겠습니다.


클래스와 관련된 문장의 컴파일 정보로 사용되는 '클래스의 선언'은 헤더파일(.h)에 저장을 하고, '클래스의 정의'는 소스 파일(.cpp)에 저장해서 컴파일이 가능하도록 합니다.


위와 같이 파일을 각각 분리해서 사용하면, 클래스의 파악이 훨씬 쉬워집니다.


그리고 파일 구분이 깔끔해졌다고 생각할 수 있습니다.


오늘의 포스팅은 여기까지입니다.


읽어주셔서 감사합니다.

728x90
반응형

'프로그래밍 > C++' 카테고리의 다른 글

[C++] STL이란  (0) 2021.06.02
[C++]C++의 구조체와 Class  (0) 2017.04.20
[C++]new 와 delete, 그리고 C++의 헤더파일  (0) 2017.04.17
[C++]참조자(reference) 3  (0) 2017.04.11
[C++]참조자(reference) 2  (0) 2017.04.09