C++ 43

[C++]클래스와 구조체

순서클래스구조체클래스와 구조체클래스객체 지향 프로그래밍의 핵심 단위이며, 데이터와 행동을 하나의 단위로 묶어 추상화한 타입임.객체를 생성할 수 있는 설계도 역할을 함.멤버의 기본 접근 지정자는 private으로 객체지향 설계를 통해 정보 은닉을 강조하기 위함임.클래스 설계 원칙캡슐화 원칙: 데이터 은닉과 내부 상태 안전성을 보장단일 책임 원칙: 클래스는 하나의 역할만 수행상속과 다형성 설계: is-a 관계만 상속RAII와 자원 관리: 생성자에서 자원 획득, 소멸자에서 해제, 스마트 포인터, lock_guard 등 표준 RAII 활용인터페이스와 구현 분리값/참조 타입 구분자원관리 Rule of Three/Five/ZeroRule of Three클래스가 동적 자원을 직접 관리할 때, 컴파일러가 자동으로 생성..

C++ 2025.09.01

[C++]C와 C++ 언어의 차이점

순서C언어C++ 언어C와 C++언어의 차이점C언어시스템 프로그래밍을 위한 절차지향적인 언어이다.특징운영체제인 유닉스 개발을 위해 만들어졌으며, 하드웨어 제어가 필요하여 고수준 언어임에도 저수준 언어의 특성을 갖게됨.메모리 주소에 직접 접근하여 데이터를 조작하고, 프로세서를 제어하는 기능을 제공함.하드웨어를 효율적으로 제어하여 프로그램의 실행 성능을 높일 수 있음.특정 하드웨어에 종속되지 않고 다양한 컴퓨터 시스템에서 실행될 수 있어 이식성이 뛰어나며 예측 가능한 성능을 중시한다.간결한 언어가 핵심으로 문법과 표준 라이브러리가 비교적 작아 학습 비용이 낮고, 빌드 체인도 단순함.간결하다는 의미는 문법 요소가 적고, 추상화 도구가 단순하며 표준 라이브러리 규모가 작은편을 의미함언어는 간단하지만, 문제 해결의..

C++ 2025.09.01

[트러블 슈팅] UnrealEngine에서 ObjectPool을 제작했을 때

문제 기능 : ObjectPoolManager문제개요오류 상황: ObjectPool로 관리중인 오브젝트 사용시 오브젝트의 Mesh가 렌더링되지 않는 현상 및 Hit Event 물리기능 미작동발생 배경: 무기를 사용하여 ProjectileObject를 Get하여 사용할 때 발생원인 분석오류 원인: Object를 관리하는 ObjectPoolManager를 Actor 또는 ActorComponent를 상속시켜 사용하면 Level 이동시 파괴되는 이유로 SubSystem을 상속시켜 사용함.구조적 이해:렌더링 문제: 렌더링은 UPrimitiveComponent가 Scene에 등록되어야 동작함 => SubSystem 내부에서 RegisterComponent()가 호출되지 않아 렌더 파이프라인에 연결되지 않음Phys..

C++/트러블슈팅 2025.08.21

[C++]행동 패턴/옵저버 패턴

순서옵저버 패턴이란?옵저버 패턴의 장점과 단점옵저버 패턴 사용시 고려사항간단한 옵저버 패턴 작성옵저버 패턴이란?한 객체의 상태 변화를 감지해서 연관된 객체에 자동으로 통보하는 패턴객체 간의 느슨한 결합을 유지함상태 변화에 따른 자동 동기화를 사용함옵저버 패턴 사용의 예플레이어 상태 변화: 플레이어 체력이 변할 때 UI, 사운드, 이펙트가 동시에 반응해야할 때이벤트 기반 시스템: 게임 상태 변화를 여러 시스템이 감지해야 할 때느슨한 결합을 유지하면서 이벤트를 전파하고 싶을 때MVC 패턴에서 모델의 변화를 뷰에 알려야 할 때옵저버 패턴의 장점과 단점장점이벤트 기반 시스템 설계 가능객체 간 의존도 낮음단점순서 보장이 어려움많은 옵저버가 있을 경우 성능에 문제가 생길 수 있음옵저버 패턴 사용시 고려사항옵저버 등..

C++/디자인패턴 2025.07.31

[C++]구조 패턴/퍼사드 패턴

순서퍼사드 패턴이란?퍼사드 패턴의 장점과 단점퍼사드 패턴 사용시 고려사항간단한 퍼사드 패턴 작성퍼사드 패턴이란?복잡한 시스템에 대해 간단한 인터페이스를 제공하는 패턴복잡한 하위 시스템을 숨기고 간단한 인터페이스로 제공함퍼사드패턴 사용 예게임 시작 시 수많은 시스템을 초기화할 때복잡한 라이브러리를 간단하게 사용하고 싶을 때여러 서브시스템을 조합해서 사용해야 할 때클라이언트가 내부 구조를 몰라도 되게 하고 싶을 때퍼사드 패턴의 장점과 단점장점클라이언트 코드 단순화시스템 구조에 대한 결합도 감소단점퍼사드에 너무 많은 기능이 집중되면 변경에 취약하위 시스템에 대한 직접 제어가 필요할 때 오히려 방해됨퍼사드 패턴 사용시 고려사항퍼사드가 지나치게 방대한 책임을 지지 않도록 주의해야함간단한 퍼사드 패턴 작성

C++/디자인패턴 2025.07.30

[C++]구조 패턴/데코레이터 패턴

순서데코레이터 패턴이란?데코레이터 패턴의 장점과 단점데코레이터 패턴 사용시 고려사항간단한 데코레이터 패턴 작성데코레이터 패턴이란?객체에 새로운 기능을 동적으로 추가하는 패턴상속 대신 구성을 이용함기능 확장이 필요할 때 서브클래싱 대신 사용함데코레이터 패턴 사용의 예무기에 여러 인챈트를 조합하고 싶을 때버프/디버프를 중첩해서 적용할 때기본 기능에 옵션을 동적으로 추가/제거하 때상속으로는 조합이 폭발적으로 증가하는 경우데코레이터 패턴의 장점과 단점장점런타임에 객체에 기능 추가 가능상속보다 유연함단점많은 클래스가 생성될 수 있음(데코레이터 체인)디버깅 어려움데코레이터 패턴 사용시 고려사항객체 조합 순서가 중요하여 순서를 고려해야함데코레이터가 너무 많으면 관리가 어려움간단한 데코레이터 패턴 작성

C++/디자인패턴 2025.07.29

[C++]구조패턴/어댑터 패턴

순서어댑터 패턴이란?어댑터 패턴의 장점과 단점어댑터 패턴 사용시 고려사항간단한 어댑터 패턴 작성어댑터 패턴이란?서로 다른 인터페이스를 가진 클래스들을 함께 작동하도록 만들어주는 중개자 역할의 디자인 패턴즉, 호환되지 않는 인터페이스를 연결해주는 디자인 패턴어댑터 패턴 사용의 예외부 SDK/라이브러리 통합크로스 플랫폼 개발레거시 시스템 연동다양한 API 통렌합(렌더링, 오디오, 네트워크)어댑터 패턴의 장점과 단점장점기존 클래스를 수정 없이 재사용 가능함클라이언트 코드 변경 없이 다양한 인터페이스 연결 가능함단점코드가 복잡해질 수 있음너무 많이 사용하면 설계가 모호해질 수 있음어댑터 패턴 사용시 고려사항진짜 인터페이스 불일치 문제인지, 설계 문제인지 먼저 확인해야함 - 인터페이스가 이미 호환되는 경우엔 피해..

C++/디자인패턴 2025.07.28

[C++]생성 패턴/빌더 패턴

순서빌더 패턴이란?빌더 패턴의 장점과 단점빌더 패턴 사용시 고려사항간단한 빌더 패턴 작성빌더 패턴이란?복잡한 객체의 생성 과정을 단계별로 나누어, 동일한 생성 절차에서 서로 다른 표현 결과를 만들 수 있게 하는 생성 패턴.복잡한 객체를 조립하듯이 여러 단계로 나누어 생성함.빌더 패턴의 사용 예캐릭터 커스터마이징과 같이 많은 옵션이 필요할 때생성자 매개변수가 너무 많을 때선택적 매개변수가 많을 때객체 생성 과정이 여러 단계일 때빌더 패턴의 장점과 단점장점복잡한 객체 생성 제어: 객체 생성 과정을 세밀하게 조정 가능가독성 향상: 메서드 체이닝을 통한 명확한 생성 절차를 가짐불변 객체 생성 용이: 생성 후 변경 불가능한 객체 정의에 적합함생성과 사용의 분리: 클라이언트는 생성 세부사항을 몰라도 됨단점클래스 수..

C++/디자인패턴 2025.07.25