1 minute read

C++ 정리 6(클래스와 객체(4))

C++ 구조체

구조체는 클래스와 거의 동일한 기능을 합니다.

구조체의 접근 지정자는 public이 디폴트 값입니다.

구조체도 클래스처럼 다음과 같이 선언합니다.

​ struct structName {

​ };

​ structName stOBJ;

구조체와 클래스는 디폴트 접근 지정자가 다르다는 것을 제외하고 모두 똑같습니다.

하지만 혼란을 피하기 위해서 구조체보다는 클래스를 사용하는 것을 추천합니다.

c++ 프로그램 작성법

우리가 파이썬이나 C언어를 공부할때에 하나의 파일에 모든 코드를 넣고 실행하였습니다. 하지만 c++은 그렇지 않습니다. .h, .cpp, main.pp 파일로 나눠서 프로그램을 작성합니다.

처음에 공부할때 왜 어렵고 귀찮게 이렇게 나눠서 프로그래밍을 할까 생각했었습니다. 하지만 공부를 하다 보니 이렇게 프로그램을 작성하는 것이 전체 프로그램을 관리하기에 쉽고 나중에 코드를 수정할 때도 쉬우며 클래스를 재사용하기에도 좋다는 것을 알게 되었습니다.

책에 있는 예시로 정리하겠습니다.

​ Circle.h : Circle 클래스 선언부

​ Circle.cpp : Circle 클래스 구현부

​ main.cpp : main( ) 함수 등 나머지 코드

그리고 Circle.cpp 와 main.cpp 에는 #include “Circle.h”로 Circle.h를 include 해줘야합니다.


중복 선언 오류

이렇게 프로그래밍 할 때 주의해야 할 점이 있습니다. 여러개의 파일을 사용하면서 헤더파일이 여러번 include 될 수 있습니다. 이렇게 같은 헤더파일이 여러번 include되면 오류가 발생할 수 있습니다. 따라서 이러한 오류를 방지하기 위해 우리는 한가지 기능을 사용하여야 합니다.

#ifndef CIRCLE_H

​ #define CIRCLE_H

​ ~~

​ ~~

​ #endif

이 조건 컴파일 문을 작성 해줌으로써 헤더파일 중복 오류를 방지할 수 있습니다.

이 조건 컴파일 문은 다음과 같이 작동합니다.

  1. #include “Circle.h”가 처음 처리 될 때 #define CIRCLE_H 가 정의 됩니다.
  2. 2번 째 #include “Circle.h”가 처리 될 때 이미 CIRCLE_H가 정의 되었으므로 #endif 문으로 빠져 나가게 됩니다.

여기까지가 클래스와 객체에 대한 내용입니다.

이번 단원은 c++ 프로그래밍을 시작하는데 있어서 아주 중요한 단원 입니다. 이 단원으로 부터 객체지향프로그래밍이 시작되고 이 단원의 개념 생성자, 소멸자, 객체, 클래스 등이 앞으로 계속 나올 것입니다. 그래서 이 단원을 반드시 확실히 숙지하고 넘어가야 뒤에 객채 지향 프로그래밍의 내용들을 수월하게 이해하면서 따라갈 수 있을 것입니다.

그럼 오늘은 여기서 마치고 다음 시간에 객체 포인터에 대해서 정리하겠습니다.

Updated: