본문 바로가기

c++22

게임 개발에서 i++이 아니라 ++i를 사용하는 이유 게임 개발에서 i++이 아니라 ++i를 사용하는 이유 게임 개발을 하다 보면 반복문을 돌 때 i++이 아닌 ++i로 작성한 코드를 많이 보게 될 것이다. 그 이유는 아래와 같다. 즉 i++은 깊은 복사, ++i는 레퍼런스 반환. i++일 때는 복사 비용이 증가하기 때문에 해당 이터레이터의 규모가 클수록 성능 저하를 일으킬 수 있다. 실제 코드로 살펴보자. 기본 자료형의 연산자 오버로딩은 코드를 볼수가 없어서 stl vector 연산자 오버로딩 코드를 가져왔다. _Inc() 함수는 increase라서 값 더해주는 함수라고 생각해두고, 코드만 보면 전위는 레퍼런스 연산자로 그대로 객체에 값을 더해주고, 후위는 임시 객체를 만들어서 주는걸 볼 수 있다!! 사실 int와 같은 기본 자료형은 ++i를 안써도 최적.. 2023. 11. 2.
[C++] 싱글톤 패턴(2) - 데이터 영역에 객체 생성 방식 [C++] 싱글톤 패턴(2) - 데이터 영역에 객체 생성 방식 이번 포스팅은 싱글톤 패턴 2로 이전 포스팅과 다른 방식으로 싱글톤을 구현한다. 이전 포스팅 링크이다. 읽고 오길 바란다. https://syrang.tistory.com/87 [C++] 싱글톤 패턴(1) - 동적 할당 방식 [C++] 싱글톤 패턴(1) - 동적 할당 방식 오랜만에 포스팅을 쓴다. 최근에 디자인 패턴중 하나인 싱글톤 패턴에 대해 배웠다. 역시 기록해두는 일이 머릿속에서도 정리가 잘되고 기억이 오래 남는 syrang.tistory.com 1. 이번에도 똑같이 객체의 생성자와 소멸자를 private로 설정해준다. // GameEngine.h class GameEngine { private: GameEngine(); ~GameEng.. 2022. 9. 8.
[C++] 싱글톤 패턴(1) - 동적 할당 방식 [C++] 싱글톤 패턴(1) - 동적 할당 방식 오랜만에 포스팅을 쓴다. 최근에 디자인 패턴중 하나인 싱글톤 패턴에 대해 배웠다. 역시 기록해두는 일이 머릿속에서도 정리가 잘되고 기억이 오래 남는 것 같다. 본 포스팅은 발상 => 문제발생 => 다음 발상 => 문제 발생 => 해결 느낌으로 진행된다. 순서대로 차근차근 따라 해보자. 0. 싱글톤 패턴? : 싱글톤 패턴은 해당 클래스로 만들 수 있는 객체를 단 1개로 제한하는 방식을 말한다. 근데 객체의 개수는 1개지만 어디서든 쉽게 접근해서 호출할 수 있어야 한다. 1. 가장 먼저 떠오르는 방식은 생성자를 숨기는 것이다. (private) GameEngine이라는 클래스가 있다고 가정하자. class GameEngine { // GameEngine.h 파.. 2022. 9. 8.
[C/C++] Class (3) - 레퍼런스 변수 [C/C++] Class (3) - 레퍼런스 변수 목차 1. struct 사용의 변화 2. 접근 제한자 (private, protected, public) 3. private vs public 4. class란 5. class 초기화 문법 6. 멤버 함수 7. 레퍼런스 변수 드디어 클래스 포스팅의 마지막 목차이다. 레퍼런스 변수에 대해서 잘 설명할 수 있을지 걱정이 되지만 내가 배운 것을 토대로 포스팅을 작성하였다. 아직 문법을 배우는 중이라 더 나은 설명을 모르겠는데 공부하다가 더 이해를 도울 수 있는 방법이 생각나면, 후에 포스팅을 수정하겠다. 모두 공부 힘냅시다! :) - 원하는 상황 가정 먼저 레퍼런스 변수를 배우기 앞서서 다음 상황을 가정해보자. 1. 나는 CMy라는 클래스를 만들었다. 2. 객.. 2022. 3. 22.
[C] 가변 배열 (malloc) [C] 가변 배열 (malloc) (update) 2022.03.10 코드에 오타가 많아 수정했습니다. 그동안 배웠던 배열은 크기가 고정이었다. int arr[10] = {}; // 크기 10개 짜리 배열. 이건 가능할까? //1번 경우 int a=100; int arr[a] = {}; //2번 경우 int iInput = 0; scanf_s("%d", &a); int arr[a] = {}; // 지역변수인데 실행이전 컴파일러가 값을 확정할 수 없다. // 프로그램을 실행시켜봐야 아는 자료형이 어디 있겠느냐~ 배열 개수를 선언할 때에는 변수를 사용할 수 없다. 가변 배열을 만들기 위해서는 힙 메모리 영역을 사용할 수밖에 없다. - 가변 배열 만들기 가변 배열을 할 수 있는 자료형을 분할 구현을 해서 만든.. 2022. 1. 10.