일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
- RootMotion
- 1563
- winapi
- 백준
- RVO
- Frustum
- 프로그래머스
- 티스토리챌린지
- DeferredRendering
- C
- 오블완
- 팰린드롬 만들기
- 줄 세우기
- UnrealEngine4
- UE5
- Unreal Engine5
- IFileDialog
- 2294
- baekjoon
- algorithm
- UnrealEngine5
- C++
- const
- DirectX11
- GeeksForGeeks
- NRVO
- softeer
- 언리얼엔진5
- directx
- Programmers
- Today
- Total
목록C++ (26)
Game Develop
비트마스크 ->집합의 요소들을 비트로 표현하는 방법. 특정알고리즘이라기보다는 기법,테크닉을 의미한다. 예를들어 {1,2,3,4,5} 의 집합이 있다면 부분집합은 다음과같다 int[] array1 = {1,2} int[] array2 = {1,2,4}............... 등등 물론 배열로 표현할수는 있다. 하지만 그러면 메모리를 많이 잡아먹게된다. 집합의 개수가 n개라 가정하면, 부분집합의 개수는 2^n 개이다. (자기자신 포함) n이 '10'만되도 이미 2^10인 1024개이다. 하지만 저걸 bit로 표현해보자. {1,2,3,4,5} 의 부분집합 {1,2}는 아래와 같이 표현할 수 있다. 11000 {1,2,4} 1,1,0,1,0 이 2진수들을 10진수로 바꿔서 보관하면, 고작 int형 하나로 하..
초기화리스트를 사용해야 하는 경우 2가지와 사용할 경우 이점을 설명해보겠다. 1. 클래스에서 상수형변수, 참조형변수를 멤버변수로 보유해야 할 경우. 상수형 변수와 참조형 변수는 둘 다 반드시 선언과 동시에 초기화를 시켜야 한다. 애초에 그렇게 하지 않으면 바로 에러가 나오기 때문에 컴파일도 못한다. 초기화리스트는 말 그대로 '초기화'이기 때문에, 생성자에서 원하는 값으로 초기화가 가능하다. 메인함수에서 인스턴스를 생성할 때 원하는 매개변수값으로 해당 인스턴스의 상수형변수, 참조형변수를 초기화시키는게 가능하다는 것이다. 아래의 예시를 보면 잘 되는걸 확인할 수 있다. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 ..
C++ 기본기를 다지기 위해 GeeksForGeeks 사이트에서 Quiz를 풀면서 알게된 기본 C++지식들을 정리하는 곳입니다. 간단하게 뭐는 뭐다..라고만 올리기도 하고, 모르는 문제가 있으면 해당문제 공부해서 올릴 예정입니다. https://www.geeksforgeeks.org/c-plus-plus-gq/constructors-gq/ Constructors in C++ - GeeksQuiz Quiz or mock test on constructors in C++. The quiz contains multiple choice and output of program questions for interview preparation. www.geeksforgeeks.org C++을 공부하는 분들은 한번쯤이..
Example 1. const키워드가 *앞에 선언될 경우 -> Heap에 락걸려있다는 느낌 int num1 = 4; int num2 = 61; const int* pNum = nullptr; pNum = &num1; // 정상적으로 수행 *pNum = 10; // Error const키워드가 *앞에 선언될 경우, 참조하는 값이 상수화된다. 그렇기때문에 pNum이라는 포인터변수의 값이 변경되는거는 상관없지만, 포인터가 가리키고있는 값의 변경에는 에러가 뜬다. Example 2. const키워드가 * 뒤에 선언될 경우 -> Stack에 락걸려있다는 느낌. int num1 = 4; int num2 = 61; int* const pNum = nullptr; pNum = &num1; // Error *pNum =..
프로그램을 개발하다보면 바탕화면에 있는 파일을 자신의 프로그램에 드래그앤드랍해서 사용해야하는 경우가있다. 예를들어 유니티에 새 프로젝트를 만든다면 그 프로젝트만의 Assets 폴더가 생길것이고 프로그램에서 폴더의 내용물을 표시할것이다. 이 때 바탕화면의 png파일이라던가 하는 파일들을 프로그램의 AssetsWindow에 드래그앤드랍하면 파일이 프로젝트의 Assets폴더에 복사가 돼서 프로그램에 표시가된다. WINAPI프로젝트의 디폴트로는 드래그드랍이벤트가 작성되어있지 않기때문에 따로 해줘야한다. 보통 BOOL InitInstance(HINSTANCE hInstance, int nCmdShow) 에다가 HWND변수를 생성 후 초기화시켜줄텐데, 그다음에 DragAcceptFiles(hWnd, true); 실..
두가지 방법이 있다. 첫번째방법은 상당히 오래전부터 사용한 방법이고, 두번째 방법은 윈도우비스타 이후부터 권장되어진 방법이다. https://docs.microsoft.com/en-us/windows/win32/api/commdlg/nf-commdlg-getopenfilenamea GetOpenFileNameA function (commdlg.h) - Win32 apps Creates an Open dialog box that lets the user specify the drive, directory, and the name of a file or set of files to be opened. docs.microsoft.com MSDN에서 직접 언급했다. 샘플코드같은것들도 들어가서 조금만 뒤지면 나오..
Person(Person&& other) : m_ptr(other.m_ptr) { other.m_ptr = NULL; // 소멸자호출 방지하기위함. } ~Person() { delete m_ptr; } 복사생성자는 아예 새로 할당받는거고, 이동생성자는 호출된 인스턴스가 가지고있는 포인터변수의 주소값을 그대로 옮기는(이동)것이기 때문에 임시객체를 만들필요가없다. 그래서 더 빠르다. 생성자부분에서 other.m_ptr = NULL값을 넣어주는이유는, 안넣어주면은 other인스턴스가 소멸될 때 다른곳으로 이전된 m_ptr이 delete 되버리기 때문이다. 다른곳에서 쓰이고있는데 해제시켜버리면 안됨.
- 싱글톤이란 싱글톤(Singleton)은 싱글 인스턴스(Single Instance)의 줄임말로, 말 그대로 프로그램 내에서 특정 클래스의 인스턴스를 하나만 생성한다음 공유하여 사용하는 디자인패턴이다. 보통 여러곳에서 접근해야하는 유틸성 성격을 가진 클래스를 싱글톤으로 생성하곤한다.( 사운드매니저,타이머클래스 등등) 예를들어 게임개발시 필수기능인 Timer클래스는 실시간으로 시간이랑 FPS를 계산하는 클래스이기 때문에 실행 초기에 인스턴스를 하나만 생성해서 계속 업데이트시키면 된다. 하지만 코딩을 하다보면 여러곳에서 현재시간을 이용하여 구현해야하는 기능들이 많기 때문에 이 인스턴스에대한 접근을 전역적으로 하게 해야한다. 이 때 적합한게 싱글톤패턴이다. 싱글톤패턴에 대한 구현은 정말 다양하기때문에 밑의 ..