[c++] 클래스의 기본

조히·2023년 4월 24일
0

구조체

연관 있는 데이터를 묶을 수 있는 문법적 장치
C++에서는 struct 생략해 변수 선언 가능
C++에서는 구조체 안에 함수 삽입 허용
같은 구조체의 변수가 하나의 함수를 공유한다.

enum : 구조체 내에서 유효한 상수 정의 시 사용
namespace를 사용해 상수가 사용되는 영역을 명시하면 여러 구조체에서 사용하는 상수 선언시 도움

함수는 외부로 뺄 수 있음 : 해당 함수가 어디에 정의되어 있는지 정보만 추가
→ 선언은 내부에, 구현은 외부에

구조체 안에 함수가 정의되어 있으면, 함수를 인라인으로 처리
근데 함수를 구조체 밖으로 빼면, 이러한 의미가 사라지므로 키워드 inline 사용

클래스와 객체

structclass로 바꾸면 클래스가 됨
클래스는 기본적으로 클래스 내에 선언된 변수는 클래스 내에 선언된 함수에서만 접근 가능
Car run99; 형태로 클래스 변수 선언

클래스는 접근 허용범위를 별도로 선언해야 함
public protected private

  • public : 어디서든 접근 허용
  • protected : 상속 관계에 놓여있을 때, 유도 클래스에서의 접근 허용
  • private : 클래스 내에서만 접근 허용

클래스와 구조체의 차이 : 접근제어 지시자 선언 안했을 때, 구조체는 모두 public, 클래스는 모두 private 선언
→ 정보 은닉을 위함

객체, 멤버변수, 멤버함수

c++에서의 파일분할

헤더파일(.h) : 클래스의 선언을 담는다. 컴파일을 하는데 있어 반드시 필요한 정보.
소스파일(.cpp) : 클래스의 정의(멤버함수의 정의)를 담는다. 컴파일에 필요한 정보를 가지고 있지 않다. 함수의 정의는 컴파일 된 이후에, 링커에 의해 하나의 실행파일로 묶이기만 하면 됨

#ifndef ~ #endif : 해당 파일이 정의되지 않았다면, #endif까지 실행

인라인 함수는 헤더파일에 함께 넣어야 함 : 컴파일 과정에서 함수의 호출문이 있는 곳에 함수의 몸체 부분이 삽입되어야 하므로

컴파일러는 파일 단위로 컴파일 한다.

객체지향 프로그래밍의 이해

객체지향 프로그래밍은 현실에 존재하는 사물과 대상, 그리고 그에 따른 행동을 있는 그대로 실체화시키는 형태의 프로그래밍

객체는 하나 이상의 상태 정보(데이터)와 하나 이상의 행동(기능)으로 구성

클래스의 멤버변수 선언문에서 초기화까지 하는 것을 허용하지 않음
상수는 선언과 동시에 초기화되어야 한다.

객체간의 대화 방법(Message Passing 방법) : 하나의 객체가 다른 하나의 객체에게 메시지를 전달하는 방법은 함수호출을 기반으로 한다. 이러한 함수호출을 '메시지 전달'이라 함.

클래스 기반의 두 가지 객체생성 방법

ClassName objName; : 일반적인 변수의 선언방식
ClassNmae *ptrObj = new ClassName; : 동적 할당방식(힙 할당방식)

profile
Juhee Kim | Game Client Developer

0개의 댓글