C++ 43

[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

[C++] 생성 패턴/싱글톤 패턴

순서싱글톤패턴이란?싱글톤패턴의 사용예싱글톤패턴의 장점과 단점싱글톤패턴 사용시 고려사항간단한 싱글톤패턴작성싱글톤패턴이란?Singleton패턴은 class의 instance가 단 하나만 존재하도록 보장하고, 전역적으로 접근할 수 있는 지점을 제공하는 디자인 패턴임.싱글톤패턴의 사용예DB게임내부의 ManagerPlayer(싱글 게임이라면)싱글톤패턴의 장점과 단점장점전역 접근: 어디서든 같은 인스턴스에 접근 가능메모리 절약: 하나의 인스턴스만 생성되므로 메모리 관리에 효율적데이터 일관성: 전역 상태를 하나의 객체로 관리단점테스트 어려움: 전역상태로 인해 단위 테스트가 복잡함결합도 증가: 여러 클래스가 Singleton에 의존하게됨멀티스레딩 문제: 스레드 안정성을 고려해야함확장성 문제: 나중에 여러 인스턴스가 필..

C++/디자인패턴 2025.06.20

[C++] TRPG(TextRPG) Character제작

순서Character class 생성기능 분류변수와 함수 선언Character class 생성Character.h파일 작성#pragma once#include #include class Item;class Character {private: static Character* charInstance; std::string name; //플레이어 이름 int level = 1; //레벨 int maxLevel = 10; int health = 0; //현재 체력 int maxHealth = 0; //최대 체력 int attack = 0; //공격력 int experience = 0; //경험치 int needExperience = 100; int gold = 0; //소지 골드 Item* equipWeapon..

C++ 2025.06.19

[C++]FMath

순서FMath란?FMath의 함수FMath란?언리얼 엔진에서 수학 연산을 위한 정적 함수들을 모아둔 유틸리티 클래스C++의 와 같은 역할을 하며, 벡터 연산, 난수 등을 다룰 때 자주 사용함FMath는 인스턴스를 만들 필요 없는 static 클래스이다.FMath의 함수를 사용할 때는 FMath::함수이름()의 형태로 사용함정수, 실수, 벡터 관련 연산 대부분을 포함하고 있음왜 를 두고 FMath를 사용할까?C++의 보다 게임 최적화와 관련된 고성능 수학 연산용으로 설계되었기 때문FMath의 함수Abs() - 절댓값Clamp() - 값의 범위 제한Lerp() - 선형 보간Rand() - 0 ~ Rand_Max 정수 난수FRand() - 0 ~ 1 사이 float 난수 RandRange(a, b) - a ~..

C++ 2025.06.18

[C++] 디자인패턴

순서디자인패턴이란?생성패턴(싱글톤 패턴)구조패턴(데코레이 패턴)행동패턴(옵저버 패턴)디자인패턴이란?개발 시 반복적으로 등장하는 문제를 해결하기 위한 일반화된 솔루션생성패턴(싱글톤 패턴)생성패턴?: 새로운 것을 만들어내는 방법과 관련된 패턴싱글톤 패턴이란?: 프로그램 전체에서 단 하나의 인스턴스만 존재하도록 보장하고, 해당 인스턴스에 전역적으로 접근할 수 있도록 하는 디자인 패턴핵심인스턴스가 월드에 하나만 존재해야하며 전역으로 접근해서 사용해야할 때생성자를 외부에서 호출할 수 없도록 막고, 정적 메서드를 통해 인스턴스를 반환해야 할 때주의해야하는 점과도하게 사용하면 유연성과 확장성이 떨어지기 때문에 꼭 필요한 경우에만 사용.Unreal Engine 게임 개발에서 활용 예제 : 전역 데이터 저장이나 게임 전..

C++/디자인패턴 2025.06.13

[C++]객체지향적 설계

순서응집도결합도SOLID원칙단일 책임 원칙개방 폐쇠 원칙리스코프 치환 원칙인터페이스 분리 원칙의존 역전 원칙객체지향적 설계가 중요한 이유대부분 라이브러리 및 오픈소스는 객체지향적으로 설계됨좋은 설계로 구현된 코드는 개발 시간을 단축할 수 있음좋은 설계로 구현된 코드는 기능 변경에 유연하게 대응할 수 있음응집도응집도란? : 클래스 또는 모듈 내부의 구성 요소들이 얼마나 밀접하게 관련되어 있는지를 나타내기 때문에 일반적으로 응집도가 높을수록 좋은 설계라고 평가됨.응집도가 낮은 경우서로 관련 없는 기능들이 하나의 클래스에 포함된 경우를 의미함.ex)팀원들의 목적이 하나인 팀과 팀원들의 목적이 각기 다른 팀의 차이응집도가 높은 경우서로 관련 있는 모듈들만 하나의 class에 있는 경우ex)1.피자배달 경로 확인..

C++ 2025.06.11

[C++]STL(Standard Template Library)

순서STL이란?컨테이너벡터맵알고리즘반복자STL이란?C++ 표준 라이브러리의 핵심 구성 요소 중 하나로 자료구조, 알고리즘, 반복자를 제네릭하게 제공하는 라이브러리임.제네릭 프로그래밍 철학을 기반으로 설계하여 템플릿을 사용해서 자료형에 상관없이 동작함최적화된 자료구조와 알고리즘을 제공하며, 코드 재사용성, 안정성, 성능을 확보함컨테이너데이터를 담는 자료구조를 뜻함. (데이터를 담는 방식이나 제공하는 메서드에 따라 여러 가지 컨테이너를 제공함)모든 컨테이너는 템플릿으로 구현되어 있으며, 다양한 타입의 데이터를 저장할 수 있음모든 컨테이너는 메모리 관리를 내부적으로 하기 때문에 사용시 메모리 해제를 직접 고려하지 않아도 됨.대부분의 컨테이너는 반복자를 제공하기 때문에 내부 구현을 몰라도 동일한 방식으로 컨테이..

C++ 2025.06.11

[C++]템플릿

순서함수 오버로딩템플릿함수 오버로딩함수 오버로딩: 컴파일러가 매개변수의 타입과 개수를 기준으로 같은 이름의 함수들을 구분할 수 있도록, 네임 맹글링하여 여러 개 정의할 수 있게 하는 것.네임 맹글링(Name Mangling): 함수 이름 구분을 위해 내부적으로 고유한 이름을 부여하는 것 (단, 함수의 반환형만으로는 오버로딩이 성립하지 않음)C언어와 다르게 C++에서는 오버로딩을 통해 동일한 이름의 함수를 여러 개 정의할 수 있음. => C는 함수 이름으로만 함수를 구분하지만, C++은 함수 이름과 매개변수 타입 정보를 함께 사용해 구분하기 때문함수 오버로딩이 유효해지는 조건매개변수 타입이 다른 경우매개변수의 개수가 다른 경우함수 오버로딩 호출함수 오버로딩이 되려면, 호출되는 함수가 분명해야함. 호출 시점..

C++ 2025.06.09

[C++] 자원 관리하기

순서스택 메모리힙(동적) 메모리Dangling PointerMemory Leak스마트 포인터얕은 복사와 깊은 복사언리얼 엔진의 메모리 관리스택 메모리함수 내에서 선언된 지역 변수와 매개변수는 별도로 동적 할당하지 않는 한, 기본적으로 스택 메모리에 저장되며, 함수가 끝나면 자동으로 해제됨.예외적인 상황으로 함수 내의 제어구조, 블록, 스코프 등에서 선언된 변수는 해당 지역이 끝날 때 마다 소멸됨.일반적으로 할당 가능한 스택 메모리의 크기가 제한적임변수의 스코프(생존 영역)을 벗어나면 자동으로 해제되므로, 메모리를 더 길거나 유연하게 관리하기 어려움 => 해당 문제를 해결하기 위해 힙(동적)메모리를 사용할 수 있음힙 메모리동적 할당 시 new 연산자를 사용하고, 해제 시 delete 연산자를 사용함스택과 ..

C++ 2025.06.09