분류 전체보기

[기술 질문] #17_Lambda C++의 Lambda에 대해 알아보겠습니다. Overview 개념 캡처 블록 람다의 활용 LinQ [Basic C++] #44_람다 표현식, 기본 [Basic C++] #44_람다 표현식, 기본 STL 알고리즘 중 "람다 표현식"에 대해 알아보겠습니다. "전문가를 위한 C"의 17 항목, "STL 알고리즘 마스터하기"에 해당하는 내용입니다. Overview 개념 syntax 캡처 블록 webddevys.tistory.com return type { function body } Details [정의] : C++의 람다 표현식은 익명의 함수 객체를 인라인으로 정의할 수 있도록 해주는 기능입니다. [구성] : 람다 표현식은 대괄호로 시작하는 캡처 리스트, 중괄호로 시작하는 매..
[Unreal_C++_DarkSoul]#14_발사체 발사체 클래스를 구현합니다. Overview 개요 및 설계 코드 결과 영상 #0. 개요 및 설계 1. 목적 Projectile 클래스 구현 Projectile Spawner 컴포넌트(액터 컴포넌트) Object Pooling 구현 2. 설계 단일 공격 무기 클래스 내 발사체들을 따로 관리하는 발사체 관리 컴포넌트를 구현합니다. 발사체 관리 컴포넌트는 해당 무기 클래스에서 사용하는 발사체들의 객체 풀링을 구현합니다. #1. 코드 1. Projectile.h #pragma once #include "CoreMinimal.h" #include "GameFramework/Actor.h" #include "Projectile.generated.h" /******..
[Unreal_C++_DarkSoul]#14_Actor Compnent 간 소통 객체의 Actor Component간 소통을 구현합니다. Overview 문제 해결 GetOwner() vs FindComponentByClass() #0. 문제 1. 문제 GameObject 객체는 다양한 Actor Component를 가집니다(Mana 컴포넌트, Weapon 컴포넌트 등) Actor Compnent 간의 소통을 위해 각 컴포넌트는 BeginPlay() 정의부에서 GetOwner()를 통해 액터 객체를 가져와 서로의 컴포넌트에 대한 참조를 가져오는 방법을 사용합니다. 하지만, 각 컴포넌트의 초기화 완료 시점이 다르기 때문에, 아직 초기화되지 않은 컴포넌트의 참조를 가져오는 에러가 발생합니다. 이때, Tick..
[기술 질문] #15_RTTI, 런타임 타입 정보 C++의 RTTI에 대해 알아보겠습니다.  Overview 개념typeid캐스팅 #0. 개념1. RTTI[정의] : C++의 RTTI는 "Run-Time Type Information"의 약자로, 프로그램 실행 중 객체의 동적 타입 정보를 식별하고 검색하는 기능을 제공합니다.[특징] : 다형성 제공 : C++의 가상 함수는 다형성을 구현하는 중요한 매커니즘 중 하나입니다. 파생 클래스는 기본 클래스의 가상 함수를 오버라이딩 할 수 있으며, 동일한 시그니처의 함수를 하나의 데이터 타입에 귀속되지 않고, 여러 유형으로 표현될 수 있도록 해줍니다. 가상 함수는 동적 바인딩을 통해 객체의 동적 타입에 맞는 적절한 함수 호출을 보장합니다. 만약, 기본 클래스의 포..
[기술 질문] #15_가상 함수 C++의 가상 함수에 대해 알아보겠습니다. Overview 개념 가상 소멸자 추상 클래스 인터페이스 #0. 개념 1. 가상 함수 [정의] : C++의 가상 함수는 기본 클래스에서 virtual 예약어와 함께 선언되며, 파생 클래스에서 오버라이드(재정의)할 수 있습니다. 컴파일러는 해당 함수를 가상 함수로 처리하고 객체의 타입에 따라 해당 함수의 호출 대상을 동적으로 결정할 수 있습니다. 결과적으로, 가상 함수의 사용은 객체의 타입에 관계없이 일관된 인터페이스를 제공하며, 파생 클래스의 재정의를 통해 유연하게 확장할 수 있도록 해줍니다. [특징] : 가상 함수는 다형성을 구현하는 중요한 메커니즘입니다. 가상화된 멤버 함수는 파생 클래스에서 오버라이딩 할 수 있으며, 같은 이..
[기술 질문] #14_템플릿, Template C++의 템플릿에 대해 알아보겠습니다. Overview 개념 템플릿 변수 템플릿 함수 템플릿 non-type 파라미터 템플릿 클래스 이중 템플릿 #0. 개념 1. 정의 C++의 '템플릿'은 함수나 클래스가 특정한 데이터 형식이 유형에 귀속되지 않고, 일반화되어 여러 데이터 형에 대해 동작할 수 있도록 하는 '제네릭 프로그래밍'을 제공합니다. 따라서, 템플릿은 서로 다른 유형의 클래스 혹은 함수의 인스턴스 생성을 위한 청사진을 제공하며, 컴파일 시점에 그 상세 유형이 결정됩니다. 2. 특징 [ 일반화 ] : 템플릿은 특정한 데이터 형식에 의존하지 않고 여러 종류의 데이터 형식에 대해 동작할 수 있도록 합니다. 이러한 특징은 사용자로 하여금 코드 작성의 유연성과..
[기술 질문] #13_6가지 디폴트 멤버 메서드 클래스의 6가지 디폴트 멤버 메서드에 대해 알아보겠습니다. Overview 개요 6가지 디폴트 메서드 대입 vs 생성, 복제 vs 이동 얕은/깊은 복사 #0. 개요 1. 클래스 제공 기본 메서드 C++의 클래스는 사용자가 별도로 정의하지 않아도, 컴파일 시점에 컴파일러가 자동으로 생성하는 몇 가지 디폴트 메서드들이 존재합니다. 클래스가 제공하는 6가지 디폴트 혹은 암시적 메서드들은 생성자, 복사 생성자, 복사 대입 연산자, 이동 생성자, 이동 대입 연산자, 그리고 소멸자가 있습니다. #1. 6가지 디폴트 메서드 1. 디폴트 생성자 #include using namespace std; class MyClass {}; int main() { MyClass* o..
[기술 질문] #12_함수 포인터 함수 포인터에 대해 알아보겠습니다. Overview 개념 대리자(Delegate) 콜백(Callback) 함수 #0. 개념 1. 함수 포인터?? // [ 반환 타입 | 포인터 이름 | 매개 변수 ] int (*funcPtr1)(int a, int b); void (*funcPtr2)(); C++는 변수 혹은 배열을 가리키는 포인터와 함께 함수를 가리키는 포인터 또한 지원합니다. #1. 대리자 1. 정의 Delegate는 범용적이고, 타입 안정성을 갖고 이벤트 처리 및 콜백 매커니즘을 구현하는 중요한 개념입니다. Unreal C++의 Delegate는 함수 호출 작업을 위임받아, 일관된 관점을 갖고 처리하는 인터페이스입니다 2. 동작 방식 델리게이트 C++ 오브젝트 상의 ..
[기술 질문] #11_허상 포인터(Dangling Pointer) 허상 포인터에 대해 알아보겠습니다. Overview 개념 발생 원인 #0. 개념 1. 허상 포인터?? 허상 포인터는 유효한 객체를 가리키고 있지 않은 포인터를 의미합니다. 주로 객체 파괴 시 발생하는 문제로 객체에 대한 참조가 포인터 값에 대한 수정 없이 삭제되거나, 할당 해제되어 포인터가 지속적으로 할당 해제된 메모리 영역을 가리킬 때 발생합니다. 허상 포인터에 역참조할 시 예측 불가능한 동작으로 정의되며, 잠재적 보안 오류를 갖고 있습니다. #1. 발생 원인 1. 얕은 복제 int main() { ClassA class1(3); // 디폴트 복사 생성자 사용 ClassA class2(class1); delete class1; // Da..
[Unreal]#24_ParallelFor Unreal 개발 중 "ParallelFor"에 대해 알아보겠습니다. Overview 개념 코드 적용 사례 #0. 개념 1. Task Graph?? Unreal Engine의 Task System은 "Task Graph"로 사용자가 작성한 게임 플레이 코드를 비동기적으로 실행할 수 있도록 해주는 Job Manager입니다. Task Graph는 방향성 비 순환 그래프입니다. 말 그대로, 방향성 비 순환 그래프는 개별 요소들이 특정한 방향을 갖고, 서로 순환하지 않는 그래프입니다. Task Graph는 Task의 비동기적 처리, 처리에 대한 결과 대기, Prerequisite 지정(전제 조건, 혹은 어떤 Task가 실행을 모두 마쳐야 실행 가능한 Task를 의미)..
Hardii2
'분류 전체보기' 카테고리의 글 목록 (28 Page)