전체 글 101

[C++] 시프트 연산자

순서시프트 연산자란?산술 시프트란?논리 시프트란?산술 시프트와 논리 시프트 차이보수법시프트 연산자란?시프트라는 말 그대로 이동을 시키는 것을 의미한다. 산술 시프트(>) 또는 논리 시프트 >>>를 이용함시프트 연산자는 10진수를 2진수로 표현한 값을 이동시킨다. 즉, 비트를 이동시키는 연산자시프트 연산자는 피연산자가 2개인 2항 연산자이다.시프트 연산자는 2진수로 표현된 비트를 해당하는 방향으로 이동시키는 연산자이다.산술 시프트란?숫자의 부호 비트는 유지하면서 나머지 비트를 왼쪽 또는 오른쪽으로 이동하는 연산자.산술 시프트에 대한 예시1byte 즉 8bit를 기준으로 비트로 표현한다면 10진수 정수 10을 2진수로 변환하면 [0 0 0 0 1 0 1 0]임. => 시프트 ' [0 0 0 0 1 0 1 0..

C++ 2025.07.15

[C++] is-a/has-a 관계

순서is-a 관계has-a 관계is-a 관계와 has-a 관계의 차이점is-a 관계is-a는 'A는 B이다'일 때 '~이다'와 같다.추상화(형식이나 클래스와 같은)들 사이의 포함 관계를 의미함. 클래스 A가 다른 클래스B의 파생클래스임을 뜻함.타입 A는 타입 B의 명세를 암시하여 타입B의 서브타입이라고 할 수 있음is-a관계를 통해 생성된 클래스 및 객체는 상속 관계에서 둘은 밀접하게 결합됨. => 부모 또는 기저 클래스의 명세에 변경이 발생하면 코드가 손상도리 위험이 있음.has-a 관계has-a는 "A가 B를 가지고 있다"라는 관계이다.구성 관계를 의미하며 한 오브젝트가 다른 오브젝트에 "속한다"를 말함.한 클래스가 다른 클래스의 객체를 멤버 변수로 포함하는 관계has-a 방식으로 생성된 클래스 및 ..

C++ 2025.07.14

[C++] 행동 패턴/전략, 스트래티지 패턴(Strategy Pattern)

순서전략패턴이란?장점단점전략패턴이란?알고리즘을 캡슐화하여 실행 중에 동적으로 교체할 수 있도록 하는 디자인 패턴이다.행동 패턴에 속한 디자인 패턴이다.행동패턴이란?객체나 클래스 사이의 알고리즘이나 책임 분배를 정의하여 복잡한 행동을 관리하고 조정하는데 도움을 주는 패턴한 객체가 수행할 수 없는 작업을 여러 개의 객체로 어떻게 분배하며 객체 사이의 결합도 최소화에 중점을 둠협력을 관리하여 코드의 유연성과 재사용성을 높이는데 사용됨.장점새로운 전략을 추가하거나 기존 전략을 변경하기 용이하여 코드의 유연성및 확장성을 높임.결합도를 최소화하여 클라이언트 코드가 특정 알고리즘에 종속되지 않도록하여, 필요에 따라 전략을 선택하여 사용할 수 있음.OCP(개방 폐쇄 원칙)을 준수함각 전략이 독립적으로 구현되어 코드의 ..

C++/디자인패턴 2025.07.11

[C++] Iterator 반복자

순서반복자란?주요 기능 및 연산자Iterator 사용법auto 키워드시간 복잡도iterator 반복자란?iterator 반복자는 STL 컨테이너 내부 요소를 순회하는데 사용되는 객체이다.배열의 인덱스를 직접 사용하는 대신, iterator를 활용하면 더 범용적인 코드 작성이 가능함iterator의 역할컨테이너 내 원소 순회원소 삽입, 삭제, 변경반복 구조 최적화iterator의 원리포인트와 유사한 방식으로 작동, 하지만 단순한 메모리 주소가 아닌 컨테이너 요소를 안전하게 조작할 수 있는 인터페이스를 제공함.주의사항iterator가 end()를 초과하여 접근하지 않도록 해야함iterator가 유효한 범위를 유지하는지 신경 써야함iterator를 활용할 때 컨테이너가 변경되면, 무효화된 반복자를 사용하지 않..

C++ 2025.07.10

[Unreal Engine] 리플렉션 시스템

순서리플렉션이란?클래스 리플렉션변수 리플렉션함수 리플렉션리플렉션이란?C++ 클래스의 변수 및 함수 정보를 엔진 내부의 메타데이터 형태로 저장하고, 이를 에디터나 블루프린트에서 활용할 수 있게 만들어주는 기술C++ 클래스에 있는 여러 멤버를 Reflection하여 에디터와 블루프린트에서 직접 설정, 호출이 가능함프로그래머가 작성한 C++ 로직의 뼈대를 디자이너나 다른 팀원들이 에디터에서 직관적으로 조정할 수 있음매개변수를 코드에서만 변경하는 것이 아니라, 에디터에서 바로 조정(슬라이더 또는 입력)하여 반복 테스트를 빠르게 진행가능클래스 리플렉션#include ClassName.generated.h 헤더파일UClass() 매크로해당 클래스를 언리얼 엔진의 리플렉션 시스템에 등록한다는 의미UClass() 매크..

Unreal Engine 2025.07.09

[C++]Alogorithm헤더파일

순서algorithm 헤더파일이란?주요 알고리즘 함수algorithm 헤더파일이란?앞서 다룬 클래스 템플릿 + 멤버 함수로 구성된 sstream 헤더와는 다르게 algorithm 헤더는 함수 템플릿임 C++ 표준 라이브러리에 포함된 헤더로 범위기반 알고리즘 함수들을 제공함정렬, 검색, 수치 연산, 변환, 집계에 이용함algorithm 헤더 특징템플릿 함수로 구성되어 컨테이너 타입과 무관하게 사용할 수 있음반복자를 사용하여 번위를 지정함주요 알고리즘 클래스, 함수알고리즘 함수들은 클래스 컨테이너(vector, list 등)의 요소에 접근하기 위해 반복자 클래스와 함께 사용함관련 반복자 클래스vector, list, set는 ::iterator 범위를 지정하여 사용함reverse, istream, ostre..

C++ 2025.07.08

[Unreal Engine]Unreal_C++ 빌드 프로세스

순서Visual Studio C++ 빌드 설정Visual Studio C++ 빌드Visual studio C++ 빌드 설정코드의 빌드 과정.코드를 컴파일(Compile)을 거쳐 링크(Link)를 하면 동적 라이브러리(DLL)가 생성된다.생성된 DLL은 언리얼 에디터에 로드되고, 새로 작성한 클래스, 함수 등이 게임과 에디터 내에서 즉시 반영됨.빌드 구성 및 플랫폼 확인Visual studio 상단 툴바에서 빌드 구성(Configuration)과 플랫폼(Platform)을 설정할 수 있음빌드 구성(Configuration)DebugGame게임 로직만 디버그 정보를 포함, 엔진은 최적화된 상태로 빌드에디터가 아닌 독립 실행 파일 환경에서 디버깅이 가능DebugGameEditor에디터 환경에서 게임 로직을 디..

Unreal Engine 2025.07.07

[C++] <sstream>헤더파일

순서sstream이란 무엇인가?sstream이 제공하는 주요 클래스sstream이란 무엇인가?C++ 표준 라이브러리의 헤더파일이다.string 기반 stream class들을 제공하여 문자열(string)을 입력/출력 stream처럼 처리할 수 있도록 도와줌sstream이 제공하는 주요 클래스istringstream문자열로부터 입력 스트림을 생성함. istringstream ex)#include #include #include using namespace std;int main() { string data = "123 456 789"; istringstream iss(data); int a, b, c; iss >> a >> b >> c; cout ostringstream출력 ..

C++ 2025.07.04

[C++]객체 지향 프로그래밍 OOP 4가지 특징

순서OOP란?추상화캡슐화상속다형성객체 지향 프로그래밍의 장점.OOP란?OOP는 Object-Oriented-Programming의 약자로 객체 지향 프로그래밍을 의미함.프로그램을 데이터와 그 데이터를 조작하는 함수를 하나의 객체로 묶어 관리하는 프로그래밍 패러다임이다.추상화(Abstraction)객체지향 프로그래밍에서 추상화는 어떤 대상을 구현할 때, 본질적인 특징을 정의하고 정의에 기반하여 대상을 객체로 구현하는 것.추상화를 통해 복잡성을 줄이고, 객체를 더 쉽게 이해하고 사용할 수 있음.캡슐화(Encapsulation)객체의 데이터와 메서드를 하나로 묶어 외부에서 직접 접근하지 못하도록 보호하는 것.캡슐화를 통해 객체의 내부 구현을 숨기고, 외부에 의한 직접적인 변경으로부터 보호할 수 있음.상속(In..

C++ 2025.07.03

[C++] toupper, tolower

순서헤더toupper 함수tolower 함수toupper, tolower함수 공통 설명헤더c++에서 헤더를 include 하여 toupper과 tolower을 사용할 수 있음toupper 함수toupper: 입력된 소문자를 대응하는 대문자로 변환해주는 역할시그니처는 int toupper(int c) 형태이다.반환값반환값은 int형으로 반환됨. 만약 인자가 소문자면 대문자로 바꾼 값의 int, 그 외는 그대로 반환됨.tolower 함수tolower: 입력된 대문자를 대응하는 소문자로 변환해주는 역할시그니처는 int tolower(int c)형태이다.반환값반환값은 int형으로 반환됨. 만약 인자가 대문자면 소문자로 바꾼 값의 int, 그 외는 그대로 반환됨.toupper, tolower 함수 공통 설명인자인..

C++ 2025.07.02