[기술 질문] #10_실수형의 문자열 변환 실수형(float, double)의 문자열 변환에 대해 알아보겠습니다. Overview 매크로 std::to_string 함수 std::stringstream 객체 + str 함수 #0. 매크로 1. 매크로 식 #include #include using namespace std; #define STRING(num) #num int main() { string float_str(STRING(123.456)); cout
[기술 질문] #9_부동 소수점 float 자료형과 부동 소수점에 대해 알아보겠습니다. Overview 고정 소수점 부동 소수점 오차 발생의 이유 무한과 NaN #0. 고정 소수점 1. 개념 컴퓨터에서 실수를 표현하는 두 가지 방식 중 "고정 소수점" 방식은 소수부의 자릿수를 미리 정하여, 고정된 자릿수의 소수만 표현하는 것입니다. 가장 왼쪽의 1Bit는 부호를 표현하고, 나머지 31Bit를 정수부와 소수부로 표현합니다. 소수부는 점을 기준으로 순서대로 채우며, 나머지 Bit는 0으로 채워줍니다. 고정 소수점 방식의 장점은 구현의 편리함입니다. 고정 소수점 방식의 단점은 비트 수 대비 표현 가능한 수의 범위와 정밀도가 낮기 때문에 실수 표현을 다루는 범용 시스템에서 사용하지 않고, 높은 정밀도를 필요로 ..
[기술 질문] #9_객체 지향 프로그래밍(OOP) 객체 지향 프로그래밍에 대해 알아보겠습니다. Overview 개념 네 가지 특성 다섯 가지 원칙 #1. 개념 1. OOP?? 객체 지향 프로그래밍은 컴퓨터 프로그램을 명령어의 목록으로 보는 절차 지향적 시각에서 벗어나, 실세계에 존재하고 인지하는 "객체"를 소프트웨어 세계에서 표현하기 위해 객체의 핵심적인 개념과 기능만을 추출하는 추상화를 통해 모델링하려는 프로그래밍 패러다임을 의미합니다. #2. 네 가지 특성 1. 캡슐화(Encapsulation)? OOP의 캡슐화란 데이터와 코드의 형태를 외부로부터 은닉하고, 데이터의 구조와 역햘, 그리고 기능을 하나의 캡슐 형태로 만드는 방법입니다. 예를 들면, 클래스의 private 접근 제어자 활용과 Getter..
[기술 질문] #8_컴파일러, Compiler 컴파일러에 대해 알아보겠습니다. Overview 개념 컴파일 과정 컴파일러 vs 인터프리터 C# vs C++ 게임 프로그래밍의 C++ 사용 이유 #1. 개념 1. 컴파일러?? 컴파일(Compile)은 주어진 언어로 작성된 컴퓨터 프로그램을 다른 언어의 동등한 프로그램으로 변환하는 프로세스입니다. 일반적으로, 컴파일러는 고급 언어로 작성된 코드들을 컴퓨터 언어로 변환하는 작업을 일컫습니다. 2. 인터프리터?? 인터프리터는 고급 언어로 작성된 원시 코드를 바로 실행하는 프로그램 또는 환경을 의미합니다. 일반적으로, 인터프리터는 고급언어로 작성된 원시 코드 명령어들을 한 번에 한 줄씩 읽어가며 실행하는 프로그램입니다. 소스 코드를 직접 실행하거나, 소스 코드를 다..
[Unreal_C++_DarkSoul]#13_Impact Effect Combo 공격 무기들의 충격 이팩트를 구현합니다. Overview 개요 및 설계 코드 결과 영상 개요 1. 목적 Combo 공격을 수행하는 무기들의 Impact Effect를 구현합니다. Combo 공격 무기의 충돌 이벤트에서 적절한 위치에 Impact Effect를 활성화하는 것이 목표입니다. 2. 설계 먼저, Power 컴포넌트는 데이터 멤버로 속해 있는 무기 클래스에 대한 정보를 Data Table을 통해 전달받습니다. 이때, Power 컴포넌트는 Imapct Effect 정보를 "TArray"에 저장하고, Fname과 bool 자료형은 각각 무기의 Sekeltal Mesh에 별도로 추가한 Socket 이름과 활..
[Unreal]#23_FString, FText, FName 변환 Unreal 개발 중 "FString, FText, FName"에 대해 알아보겠습니다. Overview 문자열 자료형 종류 변환 방법 요약 문자열 자료형 [Unreal]#15_FText, FString, FName [Unreal]#15_FText, FString, FName Unreal 개발 중 "FText, FString, FName"에 대해 알아보겠습니다. FName 재사용 시에도 데이터 테이블에 한 번만 저장되어 초경량 시스템을 제공합니다. 대 소문자 구분이 없고, webddevys.tistory.com 변환 방법 1. FName FString // 1. FName to FString FString String = Name..
[Unreal]#22_TTuple Unreal 개발 중 "TTuple" 자료형에 대해 알아보겠습니다. Overview 개념 코드 #0 개념 1. TTuple? 논리적으로 관련 있는 두 자료형을 하나로 묶기 위해 사용합니다. TTuple은 UObject 클래스가 아니라 TTupleBase 템플릿 구조체를 상속하므로 UPROPERTY 등 리플렉션과 함께 선언할 수 없습니다. TTuple은 한 번에 두 개의 값을 반환하고자 하는 함수 등에 활용됩니다. #1 코드 // 1. Init TTuple TestTuple = TTuple("Apple", 1); TTuple TestTuple2 = MakeTuple("Oragne", 2); // 2. Get FString String1 = TestTuple.Get(); u..
[기술 질문] #6_동적 할당 C++의 동적 할당에 대해 알아보겠습니다. Overview 개념 malloc, free new, delete virtualalloc, virtualfree #1 개념 [Basic C++] #57_동적 메모리 [Basic C++] #57_동적 메모리 C++의 "동적 메모리"에 대해 알아보겠습니다. "전문가를 위한 C"의 22 항목, "효과적인 메모리 관리"에 해당하는 내용입니다. 동적 메모리 1. 메모리 구조 1. 코드 영역 : 컴 webddevys.tistory.com [Basic C++] #3 객체의 동적 할당, 얕은 복제, 깊은 복제 [Basic C++] #3 객체의 동적 할당, 얕은 복제, 깊은 복제 C++ 개발 중 객체 생성, 복제, 그리고 대입 과정에서 발생하는, ..
[기술 질문] #5_struct, 구조체 C++의 구조체에 대해 알아보겠습니다. Overview 개념 배열과 구조체 공용체 패딩 #1 개념 1. 구조체? struct MyStruct { int IntVal; float FloatVal; long LongVal; string Str; }; 구조체는 논리적으로 관련이 있는 항목들을 하나의 자료형으로 묶기 위해 사용됩니다. 객체의 데이터 멤버처럼, 구조체의 각 멤버들은 "."를 통해 접근이 가능하며, 포인터를 활용할 수도 있습니다. 2. 주의할 점? 구조체 변수 사이에 비교 연산자를 사용할 수 없습니다. 구조체 자신의 멤버로 구조체 자신을 사용할 수 없습니다. 구조체 선언에서 멤버 변수를 초기화할 수 없습니다. 3. 코드 #include using namesp..
[기술 질문] #4_#define, 매크로 C++의 "#define" 키워드에 대해 알아보겠습니다. Overview 개념 코드 개념 1. #define #define PI 3.14 Details #define으로 정의된 기호 상수 등은 전처리기가 확장 문자열로 변환합니다. #(전처리 지시자) + define(정의하다) 주의할 점은 ";"을 붙이면 함께 치환되어 문제가 발생할 수 있습니다. 숫자 상수로 대체된 소스코드는 컴파일 에러 발생 시 찾기 어렵습니다. 유지보수에 문제가 발생합니다! 결과적으로, #define 보다 const를 활용하는 것이 더 효율적입니다. 2. 매크로 함수 #define Add(a,b) (a + b) #define PLUS(a,b) a+b Details 일반 함수 호출은 함수가 위..