일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 멀티코어
- vector
- MultiCore
- 멀티쓰레드
- 유니크포인터
- 한국산업기술대학교
- 게임공학과
- 디자인패턴
- EFFECTIVE C++
- multi-core
- Design Pattern
- material
- 복사생성자
- Multithread
- sequential
- random access
- c++
- 쓰레드
- C
- observer pattern
- Unreal
- thread
- 옵저버
- 옵저버 패턴
- 스마트포인터
- Atomic
- 프레임워크
- 메모리관리
- 멀티코어 프로그래밍
- stl
- Today
- Total
목록c++ (19)
태크놀로지
자원(resource)이란, 사용을 일단 마치고 난 후엔 시스템에 돌려주어야 하는 모든 것을 말한다. ※ 자원을 가져와서 다 썼으면, 무조건 해제해주어야 한다. 이번 포스팅 내용 객체 기반 방식의 C++가 지원하는 생성자, 소멸자, 객체 복사함수를 사용하여 자원관리 하는것을 다루겠다. 1. 객체를 사용하여 자원을 관리하자 class Investment{ public: Investment() { cout
1. 대입연산자는 *this의 참조자를 반환하게 하자 (convention) int x,y,z; x = y = z = 15; 위와 같이 대입연산은 여러개가 사슬처럼 엮일 수 있다. x = (y = (z = 15)); 또 하나의 특성은, 우측 연관 연산이라는 점이다. class Widget{ public: Widget& operator= (const Widget& rhs){ //... return *this; } } 이렇게 대입 연산이 사슬처럼 엮이려면 대입연산자는 좌변인자에 대한 참조자를 반환하도록 구현되어야 한다. (일종의 convention) +=, -=, *= 등 모든 형태의 대입연산자에서도 Convention이 적용된다. 2. operator=에서 자기대입에 대한 처리가 빠지지 않도록 하자 cla..
생성자 : 새로운 객체를 메모리에 만드는데 필요한 과정을 제어하고 객체의 초기화를 맡는다. 소멸자 : 객체를 없앰과 동시에 그 객체가 메모리에서 적절히 사라질 수 있도록 하는 과정을 제어한다. 대입연산자 : 기존의 객체에 다른 객체의 값을 줄 때 사용하는 함수 : 다음포스팅에서 진행 1. C++이 자동으로 만들어서 호출해 버리는 함수들에 촉각을 세우자 클래스안에 직접 선언해 넣지 않으면 컴파일러가 스스로 선언해 주도록 되어 있는 함수들 class Empty{ public: Empty() = default; Empty(const Empty& rhs) = default; ~Empty() = default; Empty& operator=(const Empty& rhs) = default; } 암시적(Impli..
초기화 : 객체가 항상 초기화 된다는 보장이 없다. 따라서 모든 객체를 사용하기전 항상 초기화 해주어야한다. 1. 대입과 초기화와 헷갈리지 말자. class X; // 멤버변수 theName, theAddress ,,, // 1. 대입 : 초기화가 아닌 대입이 되고 있다. X(name, address,,,) { theName = name; theAddress = address; ,,, } // 2. 초기화 : 멤버 초기화 리스트 X(name, address,,,) : theName(name), theAddress(address) ,,, 두번째 방법이 왜 더 효율적인가? 첫번째 방법은 기본생성자를 통해 미리 초기화 한후, 값을 대입해주고 있다. -> 기본생성자 호출 -> 복사 대입연산자 호출 두번째 방법은..
1. define 대신 const, enum, inline을 사용하자 왜? #define ASPECT_RATIO 1.653 의 경우 우리는 ASPECT_RATIO로 알지만, 컴파일러에게 넘어가기전 숫자 상수로 밀어버리게 됨 에러메시지에 ASPECT_RATIO가 아닌 1.653으로 나타남 따라서 매크로 대신 const 상수를 사용하자! 상수를 사용할 경우 기호 테이블에 들어감. 디버깅시 확인가능 부동소수점 실수 타입일 경우, 컴파일을 거친 최종 코드 크기가 더 작게 나올 수 있음 -> 코드에서 ASPECT_RATIO를 사용한 코드마다 1.653으로 변경하는 사본이 생기기 때문 2. 클래스 내에 static 멤버 // header class GamePlayer{ private: static const int..
Ranking System 프로젝트 소개 및 구현내용 1-taek-gameprogramming.tistory.com/38 [C++/STL] Ranking System 소개 및 구현 프로젝트 소개 프로젝트 내용: 플레이어 랭킹 관리 프로그램 작성 프로그램 요구사항 STL Container, Iterator, Algorithm을 사용한다. 플레이어는 다른 플레이어와 구분되는 고유ID를 갖는다. 플레이어는 1-taek-gameprogramming.tistory.com 프로젝트 분석 ▶ 시퀀스 컨테이너 vs 연관 컨테이너 프로젝트의 주요 기능은 검색기능입니다. 연관컨테이너는 이진탐색트리구조로 되어 검색 기능의 특화되어있습니다. 시퀀스 컨테이너는 정렬된상태라면 이진탐색이 가능하여 빠른 검색이 가능합니다. 검색기능..
프로젝트 소개 프로젝트 내용: 플레이어 랭킹 관리 프로그램 작성 프로그램 요구사항 STL Container, Iterator, Algorithm을 사용한다. 플레이어는 다른 플레이어와 구분되는 고유ID를 갖는다. 플레이어는 챔피언스리그 / 떼탈출에서 얻은 점수를 멤버변수로 갖는다. 초기화 100,000 명의 플레이어를 생성한다. 랜덤엔진을 사용하여 플레이어의 점수를 생성한다. 게임진행 - 한 번 진행할 때마다 게임 한 시즌이 끝났다고 가정한다. 전체 100,000 플레이어 중 임의의 50,000 명의 플레이어가 떼탈출을 플레이한다. 또 다른 임의의 50,000 명의 플레이어가 챔피언스리그를 플레이한다. 떼탈출에서 획득한 점수는 0~2,905,887,026점 사이의 정규분포값을 갖도록 설정한다. 챔피언스리..
베이커리 알고리즘 이론 & 원리 en.wikipedia.org/wiki/Lamport%27s_bakery_algorithm Lamport's bakery algorithm - Wikipedia Lamport's bakery algorithm is a computer algorithm devised by computer scientist Leslie Lamport, as part of his long study of the formal correctness of concurrent systems, which is intended to improve the safety in the usage of shared resources among multi en.wikipedia.org 위를 참고해서 베이커리 알고리..