[C++] 스마트 포인터 기초 개념

C++ 스마트 포인터 C++11부터 스마트 포인터가 도입되면서 C에서 사용하던 포인터(*) 사용을 권하지 않습니다. 스마트 포인터는 원시 포인터(Raw Pointer)를 세부적인 기능으로 구분하고 기능에 제한을 둔 포인터입니다. 스마트 포인터의 종류는 다음과 같습니다. std::unique_ptr std::shared_ptr std::weak_ptr 스마트 포인터를 사용하기 위해 memory STL 헤더가 필요합니다. 스마트 포인터의 장점 중 하나는 동적으로 할당한 객체의 메모리 해제가 자동으로 이뤄집니다. 더이상 생성한 객체의 흐름을 따라가며 delete를 할 필요가 없습니다. 스마트 포인터 예제 스마트 포인터의 기능을 알아보기 위해 간단한 클래스를 작성합니다....

November 29, 2020 · 5 min · Pacientes

[디자인 패턴] 프로토타입 패턴

프로토타입 패턴(Prototype Pattern) 객체를 생성하는 방법은 new 키워드를 사용한 방법이 일반적입니다. C++의 스마트 포인터도 내부적으로 new 키워드를 사용합니다. 객체를 생성하는 또 한가지 방법은 객체를 복사(Copy)하는 방법입니다. 프로토타입 패턴은 객체를 복사하는 방법을 사용하여 객체를 생성합니다. 프로토타입 패턴의 구조 프로토타입 패턴은 신규 객체를 생성하지 않고, 기존에 만들어진 객체를 복제합니다. C++에서 객체를 복사하는 방법은 얕은 복사(Shallow Copy)와 깊은 복사(Deep Copy)가 있습니다. 프로토타입 패턴은 특별한 구조를 갖는 것이 아니라, 복사를 활용합니다. 프로토타입 패턴을 위한 예제 사용자가 지정한 메세지를 객체가 저장하고 있다가 필요할때 반환하는 클래스를 작성합니다....

November 29, 2020 · 3 min · Pacientes

[디자인 패턴] 빌더 패턴

빌더 패턴(Builder Pattern) 클래스의 인스턴스인 객체는 단일 객체와 복합 객체로 구분합니다. 단일 객체는 하나의 클래스로 생성된 객체를 의미합니다. 팩토리, 팩토리 메서드, 추상 팩토리 모두 단일 객체를 생성하는 패턴입니다. 복합 객체는 하나의 객체가 다른 객체를 포함하는 관계(has-a)를 의미합니다. 클래스를 확장하는 방법에는 상속하는 관계(is-a)도 있습니다. 하지만 상속은 강력한 상-하 결합 관계와 불필요한 정보도 포함되는 단점이 있습니다. 현대적인 객체지향 개발 방법은 상속을 최소화하고 복합 객체로 구성합니다. (참고) 인터페이스 클래스를 상속하여 구현하는 것은 상-하 상속 관계가 아닌 선언과 구현으로 구분합니다....

November 28, 2020 · 5 min · Pacientes

[디자인 패턴] 추상 팩토리 패턴

추상 팩토리 패턴(Abstract Factory Pattern) 추상 팩토리는 팩토리 메서드 패턴을 확장한 패턴입니다. 팩토리 메서드 패턴은 객체 생성을 담당할 클래스를 인터페이스로 선언하여, 선언과 구현을 분리한 패턴입니다. 추상 팩토리 패턴의 구조 추상 팩토리는 팩토리 메서드와 비슷한 성격을 갖고 있습니다. 한 가지 다른 점은 추상 팩토리는 추상화된 객체 생성을 그룹으로 관리합니다. 추상 팩토리는 팩토리 메서드 패턴을 잘 이해하고 있다면, 쉽게 이해할 수 있습니다. 추상 팩토리 패턴: 인터페이스 클래스 팩토리 메서드와 동일하게 객체 생성을 담당할 인터페이스 클래스를 선언합니다....

November 28, 2020 · 3 min · Pacientes

[디자인 패턴] 팩토리 메서드 패턴

팩토리 메서드 패턴(Factory Method Pattern) 팩토리 메서드 패턴은 두 가지 패턴(팩토리 패턴, 템플릿 메서드 패턴)이 결합한 팩토리 확장 패턴입니다. 추상화(Abstract)는 팩토리 메서드 패턴을 구현하는데 중요한 개념입니다. 객체를 생성하는 팩토리와 객체의 대상이 되는 클래스를 각각 추상화합니다. 팩토리 메서드 패턴의 구조 인터페이스 클래스(Interface Class)는 클래스의 정의만 존재하는 클래스입니다. 클래스의 실제 구현은 인터페이스 클래스를 상속하는 세부 클래스에서 구현합니다. 팩토리 메서드는 팩토리와 생성 클래스를 인터페이스로 구현합니다. 팩토리 메서드 패턴: 인터페이스 클래스 팩토리 메서드 패턴의 인터페이스 클래스를 선언합니다....

November 27, 2020 · 3 min · Pacientes