-
윤성우 열혈 C++ 프로그래밍 3장) 클래스의 기본(struct와 class, private와 public, 파일분할, 객체지향 프로그래밍)PROGRAMMING/C++ 2023. 12. 22. 15:11
구조체(struct)의 기본적인 구조는 생략하고 메모하고 싶은 부분 위주로 작성해보겠다.
(혹시 저작권에 문제가 있다면 수정하겠습니다!! 개인적인 공부용으로 정리함을 알려드립니당)
https://product.kyobobook.co.kr/detail/S000001589147
sturct 내 enum사용
열거형 enum을 이용해 구조체 내에서만 유효한 상수를 정의한다.
('='의 위치를 통일시키니 훨씬 보기 좋다!!)
struct Car{ enum{ ID_LEN = 20, MAX_SPD = 200, FULL_STEP = 2, ACC_STEP = 10, BRK_STEP = 10 }; ~ }
위 방법이 싫다면 이름공간을 이용해 상수가 사용되는 영역을 명시하는 것도 좋다.
(enum을 struct Car 대신 namespace CAR_CONST에 넣으면 된다!
struct와 함수
- 함수는 struct 밖으로 빼낼 수 있다. 함수의 원형선언은 구조체 안에 두고 주석으로 함수의 기능을 적어주면 좋다.
- 구조체 안에 함수가 정의되어 있으면 함수를 인라인 처리하라는 의미를 내포한다. 함수를 밖으로 빼낼 경우 이러한 의미가 사라지므로 인라인 처리를 원할 경우 키워드 inline을 이용해서 인라인 처리를 명시적으로 지시해야 한다.
접근제어 지시자 public, protected, private
public : 어디서든 접근 허용
protected : 상속관계에 놓여있을 때, 유도클래스에서의 접근 허용
private : 클래스 내(클래스 내에 정의된 함수)에서만 접근 허용
🤔 접근제어 지시자의 뒤에는 세미콜론이 아닌 콜론이 붙는데, 이는 접근제어 지시자가 특정 위치 정보를 알리는 라벨이기 때문이다. (ex - switch문에서 case)
class와 struct
struct : 구조체 내 변수 및 함수에 별도에 접근제어 지시자를 선언하지 않으면 public이 default로 선언된다.
class : 클래스 내 변수 및 함수에 별도에 접근제어 지시자를 선언하지 않으면 private이 default로 선언된다.
C++에서의 파일분할
Car.h : 클래스의 선언을 담는다. 헤더파일의 중복을 막기 위해 아래와 같이 매크로 선언을 덧붙여준다.
🤔 인라인 함수는 헤더파일에 함께 넣어준다. 컴파일 과정에서 함수의 호출이 있으면 함수의 몸체 부분이 그대로 삽입되어야 하기 때문이다.
⭐ 컴파일러는 파일 단위로 컴파일한다. (즉, 동시에 컴파일하지 않고, 컴파일 과정에서 다른 파일을 참조하지도 않는다.)
⭐ 클래스의 맴버변수 선언문에서 초기화까지 하는 것은 허용하지 않는다.
#ifndef __CAR_H__ #define __CAR_H__ ~ #endif
Car.cpp : 클래스의 정의(맴버함수의 정의)를 담는다.C++에서 객체를 생성하는 2가지 방법
1. ClassName objName; : 일반적인 변수의 선언방식
2. ClassName * ptrObj = new ClassName : 동적 할당방식(힙 할당방식)
객체지향 프로그래밍의 이해
객체지향 프로그래밍 : 사물과 대상, 그리고 그에 따른 행동을 있는 그대로 실체화시키는 형태의 프로그래밍
객체 = 데이터(상태 정보) + 기능(행동)
ex) 과일장수 = n개의 사과 보유 + 사과 팔기
하나의 객체가 다른 하나의 객체에게 메시지를 전달하는 방법은 함수 호출을 기반으로 한다. 객체지향에서는 이러한 형태의 함수호출을 '메시지 전달(Message Passing)'이라고 한다.
'PROGRAMMING > C++' 카테고리의 다른 글
윤성우 열혈 C++ 프로그래밍 4장) 클래스의 기본(정보은닉, const함수, 이니셜라이져, 생성자, 소멸자, this포인터, self-reference) (2) 2023.12.28 SwapPointer(포인터가 가리키는 대상이 서로 바뀌도록 하는 함수) 윤성우의 열혈 C++ 문제 2-1-3 (0) 2023.12.26 윤성우 열혈 C++ 프로그래밍 2장) C언어 기반의 C++ 2(bool형 자료형, 참조자, const, new&delete) (2) 2023.12.20 윤성우 열혈 C ppt 정리본(chapter 17 ~ chapter 30) (2) 2023.12.19 윤성우 열혈 C ppt 정리본(chapter 1 ~ chapter 16) (2) 2023.12.18