C++ 객체지향, 동적할당

2021. 8. 12. 19:58C++

728x90

// 객체 지향 프로그래밍

// 지난번 클래스에 이어서

2-1) 객체지향 프로그래밍의 특징

(1) 추상화(abstraction)

- 불필요한 부분을 생략하고 객체의 속성 중에서 가장 중요한 것에

중점을 두어 개략화, 다시 말해 요점을 간추려 모델화시킨 것.

(2) 캡슐화(encapsulation)

- 데이터와 데이터를 처리하는 함수를 하나로 묶는 것

- 캡슐화된 객체의 세부 내용이 은폐되어,

기능 변경이 발생해도 오류의 파급효과가 적음

- 캡슐화된 객체들은 재사용이 가능함

- 객체들 간의 결합도가 낮아지고 인터페이스가 단순해짐

(3) 정보 은닉(data hiding)

- 캡슐화에서 가장 중요한 개념으로써, 다른 객체에게 자신의 정보를 숨기고

연산만을 통해서 접근할 수 있도록 허용

- 각 개체의 수정이 다른 객체에게 주는 영향을 최소화

(4) 상속성(inheritance)

- 이미 정의된 상위 클래스의 모든 속성과 연산을 하위 클래스가 물려받는 것

- 상속성을 이용하면 하위 클래스는 상위 클래스의 모든 속성과 연산을

자신의 클래스 내에서 재정의하지 않고도 즉시 자신의 속성으로 사용가능

(5) 다형성(polymorphism) / 함수 오버로딩, 오버라이딩 공부해야함

- 메시지에 의해 객체가 연산을 수행하게 될 때,

하나의 메시지에 대해 각 객체가 가지고 있는

고유한 방법으로 응답할 수 있는 능력

- 매개변수의 개수 및 자료형에 따라 수행하는 행위가 다른,

동일한 이름의 메서드를 여러 개 정의할 수 있음.

3. 인스턴스(Instance)

- 클래스를 사용하기 위해서는 해당 클래스를 자료형으로 하는

객체를 동적(Dynamic) 선언해야 한다.

- 이 때, 해당 클래스 타입으로 선언이 완료되어

메모리에 할당까지 끝난 객체를 인스턴스라고 한다.

- 하나의 클래스에서 여러 개의 인스턴스를 생성 가능하다.

- 인스턴스마다 고유 메모리 공간을 사용하며,

자신만의 멤버 변수를 가지지만, 멤버 함수는 모든 인스턴스가 공유

<동적 할당(Dynamic allocation)>

데이터 영역과 스택 영역에 할당되는 메모리 크기는 컴파일 때 미리 결정된다.

하지만, 힙 영역의 크기는 프로그램이 실행되는 런타임 때 사용자가 직접 결정해야 한다.

이런 방식으로 런타임 때 메모리를 할당받는 것을 동적 할당이라 한다.

<사용방법>

C언어 : malloc() / free() 라는 함수를 이용

C++ : new / delete 키워드를 사용 (객체명 앞에)

728x90

'C++' 카테고리의 다른 글

C++ PlaySound  (0) 2021.08.14
C++ 클래스와 정보은닉  (0) 2021.08.12
C++ 클래스  (0) 2021.08.11
C++ 열거형 데이터 Enum  (0) 2021.08.11
C++ 셔플  (0) 2021.08.06