일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- TObjectPtr
- softeer
- IFileDialog
- 티스토리챌린지
- 프로그래머스
- UnrealEngine5
- 팰린드롬 만들기
- 줄 세우기
- 백준
- 언리얼엔진5
- UnrealEngine4
- Unreal Engine5
- Frustum
- NRVO
- directx
- baekjoon
- C
- 2294
- RootMotion
- 오블완
- winapi
- DirectX11
- const
- GeeksForGeeks
- Programmers
- algorithm
- UE5
- 1563
- RVO
- C++
- Today
- Total
목록C++ (27)
Game Develop
++count와 count++의 차이는 뭘까? 결과론적으론 ++count는 객체를 반환, count++은 값을 반환한다는 것이다. 아래의 코드를 보자. int x = 5; int y = ++x; 사람이 의도한대로(아마도) x의 값은 1을 증가시키고 그 값이 y에 정상적으로 들어간다. 메모리에 있는 x값을 직접 증가시키고 x객체를 반환시킨다. 하지만 아래는? int x = 5; int y = x++; 사람은 y에 6이 들어가있길 바라지만, 실제로는 5가 들어있다. 물론 해당 라인의 실행이 끝난 이후에는 x에는 6이 정상적으로 들어가있다. 'x++'이라는 후위연산자의 리턴값은 컴파일러가 임시로 생성한 복사값이다. 후위연산이 실행되면 컴파일러는 임시객체에 변경하기전의 원본을 복사한다. 그리고 원본의 메모리에 ..
비트마스크 ->집합의 요소들을 비트로 표현하는 방법. 특정알고리즘이라기보다는 기법,테크닉을 의미한다. 예를들어 {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 되버리기 때문이다. 다른곳에서 쓰이고있는데 해제시켜버리면 안됨.