본문 바로가기

C++9

8. C++로 GameObjectPool을 구현 해보자. C++ 게임 오브젝트 풀 패턴 상세 구현 게임 개발에서의 성능은 핵심 요소이다. 특히 미사일, 총알, 파티클 등 수많은 객체가 동시에 생성되며, 소멸되는 상황에서메모리 관리는 게임의 프레임률과 직결된다. 이번글에서는 메모리 관리 최적화의 대표적 기법인 오브젝트 풀(Object Pool) 패턴을 C++로 구현 해보겠다. 오브젝트 풀 패턴이란?오브젝트 풀 패턴은 자주 생성되고 파괴되는 객체들을 위해 미리 메모리를 할당해 주고서필요할 때 이 풀에서 객체들을 가지고와서 사용한 후 다시 풀로 반환하는 방식이다. 주요 장점은 메모리 할당 및 해제시 오버헤드가 감소한다. new와 delete 연산의 빈번한 호출을 피하게 된다. 또한 메모리 파편화를 방지하여 동적 메모리의 반복적인 할당 및 해제로 인한 메모리 파.. 2025. 5. 21.
7. C++ friend, 동적메모리 관리, 클래스 상속에 대해서 알아보자. C++ Friend 에 대해서 객체지향 프로그래밍의 핵심 원칙중 하나는 캡슐화, 그리고 데이터 은닉이다. 하지만 때로는 예외를 둘필요가 있는데, C++에서는 friend 키워드를 사용하여 은닉성의 예외를 두기도 한다. Friend 키워드는 C++에서 제공하는 특별한 접근 권한 지정자로. 다른 클래스나 함수에게 자신의 private 또는 protected 멤버에 접근할 수 있는 권한을 부여한다. 해당 기능으로 코드의 효율성이나 유연성을 높이기 위해서 제공이 된다. 1. 전체 클래스 권한 부여.class PlayLevel{ // 다른 멤버들... friend class DesignedLevel; // DesignedLevel 클래스에 접근 권한 부여private: int mCompon.. 2025. 5. 21.
0. Direct X 기초 이해하기 : SDK, 라이브러리, Dx역사. DirectX 기초 이해하기: SDK, 라이브러리, 그리고 DirectX의 역사 게임 및 3D 그래픽 프로그래밍에서 가장 중요한 위치를 차지하는 Direct X.그런 다이렉트 X에 대해서 오늘은 알아보고자 한다. 하지만 그전에 용어에 대해서 알아할 개념들이 몇가지 있다. SDK 란 무엇인가?기본적으로 다이렉트 X를 개발하는 사람들은 DX SDK를 사용한다. 즉, SDK는(Software Development Kit)소프트웨어 개발 키트의 약자이다.정확한 정의 : SDK는 특정플랫폼, 운영체제, 또는 프로그래밍 언어를 위한 개발도구 모음.SDK vs API : SDK는 API(Application Programing Interface)를 포함하는 더 큰 개념이다. API는 소프트웨어 간의 통신 방법을 정.. 2025. 5. 21.
6. C++ string 타입에 대해서 1. String 타입string은 문자열의 모음이라고 할수 있다.#include using std::string;가변길이 문자열이며, 해당 string타입을 사용하려면이렇게 string 헤더를 사용하여야 한다.(참고로 string은 std::string에 정의 되어 있다.)string s1; // string의 기본 초기화. s1은 빈문자열이다.string s2 = s1; //s2는 s1의 복사본이다.string s3 = "hiya"; //s3는 문자열의 복사본이다.string s4(10,'c'); //s4는 cccccccccc(c가 10개)라는 뜻.위에 코드 마다 주석에 달린 내용으로 사용법을 대략 알수 있겠지만,보다시피 초기화를 하는 방법이 두 가지이다.1-1. string의 직접초기화.. 2024. 12. 5.
5. C++ auto & decltype에 대해서. 1. auto 타입 지정자auto는 컴파일러에서 초기값으로 타입을 추론하고 타입을 결정짓는 타입이다.즉, 쉽게 이야기 하자면 해당 객체의 타입을 컴파일러가 알아서 결정해줌.-> 때문에 무조건 auto 같은 경우에는 선언 시에 초기값이 있어야 한다.auto item = val1 + val2; //item은 val1 + val2을 이용해 타입을 추론해 초기화.만약 item 변수를 함수가 호출해서 사용할 때 호출값이 double형(소수점)이면, auto는 double로,int형(정수)라면 int형으로 초기화 시킨다.다만 여기에는 약간의 제약이 있는데...auto i = 0, *p = &i; //i는 int, p는 int에 대한 포인터로 추론될 예정이다.auto s2 = 0, pi = 3.14; //err.. 2024. 12. 5.
4. C++ Typedef(타입 별칭)에 대해서 1. 타입 별칭이란?다른 타입과 동의어인 이름 -> 복잡한 정의를 더 간단하게 바꿔줌.자료형을 다른 이름으로 재정의 한다고 생각하면 된다.* 전통적인 typedef 별칭 선언typedef double wages; // wages는 double과 동일어.typedef wages base, *p // base는 double, p는 double*이다. 위에 코드 예시를 보면 첫번쨰 줄에서는 동의어를 선언,아래는 위에 만든 동의어를 이용해서 다시한번 동의어를 만들며포인터를 만드는 방식으로 응용을 한 것이다. 즉, typedef로 동의어를 선언할 때 typedef가 맨 앞에,그 뒤에 타입(int, double, char등등..) 마지막으로 동의어 이름을 지정하면 된다. 어떻게 보면 typedef 키워드는 선언.. 2024. 12. 5.
3. C++ constexpr에 대해서 1. constexpr과 상수표현식constexpr란?어떤식이 상수식 이라고 명시해주는 키워드 이다.컴파일중 값을 평가하는 기능을 가지고 있다.기본적으로 해당 변수가 상수인지 아닌지에 대해서 검사한다.상수 예시)const int max_files = 20; // max_files는 상수표현식이다.const int limit = max_files + 1; // limit는 상수표현식이다.int staff_size = 27; // 상수표현식이 아님.const int sz = get_size(); // 상수표현식이 아님.기본적으로 다들 알다시피, const 키워드가 앞에 들어간 객체들이 상수라고 알겠지만,여기서 말하는 상수는 숫자(1,2,3,4...등) 또는 숫자가 초기값으로 들어있는 변수를 뜻.. 2024. 12. 5.
2. C++ const에 대하여 계속해서 저번 포스트에 이어서 이번에는 const에 대해서 다뤄보겠다.나름대로 포인터와 참조자 쪽에서 중요한 요점들이 약간씩 있기 때문에그 부분들은 약간씩 강조해 보겠다.1. const에 대한 참조자참조자를 const 타입 객체에 결합이 가능하다.즉, const 변수에 대한 참조자라는 뜻.const int ci = 1024; //올바른 사용.const int &r1 = ci; //올바른 사용.r1 = 42; //error : r1이 const이므로 수정불가.int &r2 = ci; //error : const 변수를 참조시 참조자도 const여야 함.위에를 보듯, 무조건 const 참조자는 어떤 const의 대한 참조자이다.즉, const 변수를 참조하기 위해서는 무조건 그 변수를 참조하는 .. 2024. 12. 5.