목록게임프로그래밍 (83)
bdfgdfg
객체지향 프로그래밍 언어에서는 상속이라는 키워드가 존재하는데 이름 그대로 부모 클래스의 멤버 함수와 멤버 변수를 그대로 물려받는것을 의미 한다. -> 이 떄 물려받은 클래스를 자식 클래스 혹은 파생 클래스라 한다. 장점은 공통되는 특징(멤버들)들을 다시 작성할 필요없이 필요한 기능이 담긴 클래스를 상속받으면 된다. -> 코드의 재사용성 UP 사용하는 방법은 간단하다 class 클래스 이름 : 접근지정자 부모 클래스명 { //내용. }; 즉 Human이라는 클래스가 존재하고, Student라는 클래스가 존재한다고 보자. 상속을 정하는 기준에서 유명한 방법인 IS-A, Has-A 방법이 있다. A와 B클래스가 있고 상속관계를 정하려고 해본다. IS-A : B는 ~A이다. (상속 관계) Has-A : B는 A..
RingBuffer 클래스 - 이 클래스는 메모리 풀(Memory Pool)개념이 적용된 버퍼 공간으로 주된 사용 목적은 연결에 대한 패킷을 보내거나 받을 때 사용한다. - 메모리 풀링(Memory Pooling)은 미리 사용할 메모리를 할당해 놓고 필요할때마다 꺼내서 쓰는 방식. -> 쓰레드 풀과 같은 개념. 미리 쓰레드를 할당해놓고 필요할때마다 꺼내 사용하는 방식 (매번 할당/소멸의 형태x) -> 위와 마찬가지로 메모리를 매번 할당하고 해제하는 작업이 생각보다 CPU소모가 있다. -> 더 큰 이유로는 반복적으로 메모리를 할당하고 해제하면 메모리 단편화가 생길 수 있기 때문. -> 메모리 단편화는 메모리가 조각나는 현상. 심해지면 메모리를 할당하는데 오랜 시간이 걸리며 (OS가 메모리를 할 당할 공간을..
Singleton class - 많이 사용하는 디자인 패턴 기법으로 오직 하나의 객체만 생성하여 사용하는 클래스를 의미한다. -> 패턴은 쉽게 말하면 개발자들의 경험을 통한 문제 해결 방법들을 정리하여 이름을 부여한 기법들. - 이러한 단일체(Singleton)클래스는 어떤 클래스(객체)들을 관리하는 역할로 많이 쓰인다. -> ex) User를 관리하는 UserManager등등.. 보통 Manager가 붙은 클래스들이 Singleton을 사용한다. 먼저 싱글톤 클래스를 하는데 싱글톤 패턴을 사용하는 모든 단일체 클래스는 이 클래스를 상속받는다. -> 모든 싱글턴 객체들을 관리한다. 해제할 때는 이 Singleton클래스를 통해 해제. 싱글톤 패턴을 사용하기 쉽게 매크로를 이용해본다. #define DEC..
Monitor Class - 이 클래스는 동기화 객체로서 CRITICAL_SECTION(유저모드 동기화)객체를 사용하기 편하도록 초기화와 해제를 생성자와 소멸자로 빼내어 사용자가 따로 하지 않아도 자동으로 되게 만든다. -> 모던 C++에선 lock_guard같은 역할. -> 교착 상태(DeadLock)과 기아 상태(Starvation)을 미연에 방지하도록 설계 - 사용할 때엔 동기화가 필요한 클래스는 이 클래스를 상속받아 사용한다. #pragma once #include "std.h" // 복사되는것을 방지. class Monitor { public: class Owner { // Owner클래스는 자동으로 CS객체의 소유권을 해제하기 위해 만들어짐 public: Owner(Monitor& crit);..