- 개념
프로그래밍에서 필요한 데이터를 추상화 시켜 상태와 행위를 가진 객체로 만들고, 객체들간의 상호작용을 통해 로직을 구성하는 프로그래밍 방법이다.
- 객체지향의 4가지 특징
(1) 캡슐화
객체가 모든것을 외부에 공개할 필요는 없는 정보 은닉 개념
- private
- protected
- public
(2) 추상화
만들고 싶은 것에 대한 개념을 클래스로 표현한 것입니다.
(3) 다형성
같은 이름을 사용하여 다른 기능을 구현하는 것을 의미한다.
ex) 대표적인 예시 - 오버로딩, 오버라이드
추가 정리
1. 오버로딩
한 클래스 안에 함수를 중복 정의하는 것을 의미한다. 이름은 같지만 인자의 개수나 타입이 다른 경우
동일한 기능의 함수를 정의할 때 다양한 입력값을 받기 위해서 사용한다.
.h
void SetValue(int32 iInValue);
void SetValue(float fInValue);
2. 오버라이드
부모 클래스의 함수를 자식 클래스의 용도에 맞게 재정의하여 코드의 재사용성을 높임
동작 방식 이해
(1) 함수 포인터란?
함수도 다른 변수들 처럼 주소를 가지고 있는데 이 함수의 주소를 포인터 변수에 저장해서 사용하는 걸 함수 포인터라고 합니다.

callback이란?
함수가 함수를 부른다는 뜻입니다.
(2) 가상 함수 테이블
컴파일러가 가상함수 개수 만큼의 함수포인터 배열을 만듭니다. 가상함수 테이블이란 함수 포인터 배열의 첫번째 주소 입니다.
- 가상함수 테이블 만들어지는 순간
생성하는 조건은 클래스 내부에 최소 하나의 가상함수(virtual)가 정의 되어 있는 경우
- 가상함수 완성되는 순간
자식 생성자까지 다 호출 됐을 때가 최종

(4) 상속
자식 클래스가 부모 클래스의 특성과 기능을 물려받는 것
클래스의 재사용이 용이하도록 해준다. ex) 공통적 요소
다중 상속 (Interface 상속해서 사용하는 경우)
class AActor : public UTickObject, public UWorldObject, public UNameObject
// UNameObject(이름)가 UTickObject의 기능을 가질 이유가 없는 경우 두개의 기능으로 분리후 다중 상속
Has A, Is A 관계
Is A : ~이다. 상속.
Has A : 가졌다.
Player 클래스가 FightUnit 클래스를 상속 받았으므로 Player Is A FightUnit,
멤버변수로 다른 클래스를 가지면 Player Has A Sword 라고 표현한다.
class Item {
public:
int cost;
};
class Sword : public Item {
};
class FightUnit {
};
class Player : public FightUnit {
private:
Sword Weapon;
};
객체지향과 절차지향의 차이점
절차지향은 순차적으로 실행에 초점이 되어 있고 객체지향은 객체간의 관계/조직에 초점을 두고 있습니다. 이렇게 설명하면 객체지향은 절차적으로 실행되지 않냐? 라는 의문이 드는데 객체지향 역시 절차지향과 동일한 순서로 실행됩니다.
- 절차지향은 데이터 중심, 객체지향은 기능 중심
- 절차지향의 반대는 객체지향이 아니고 객체지향의 반대는 절차지향이 아님
'C++ 개념 정리' 카테고리의 다른 글
| 6. 생성자, 소멸자 (0) | 2026.01.03 |
|---|---|
| 5. 연산자 (0) | 2026.01.03 |
| 4. 메모리 (0) | 2026.01.01 |
| 3. C++ template (0) | 2025.12.30 |
| 2. 추상 클래스 (0) | 2025.12.30 |