C++

어떤 클래스의 객체가 프로그램 전체에서 단 하나만 만들어지도록 하는 것. 오직 한개의 인스턴스만을 갖도록 보장. 그래픽스 엔진이나 사운드 엔진에 종종 사용 된다. 싱글톤을 사용하는 이유 1. 객체 생성 없이 사용될 수 있게 한다. 사운드 엔진은 여러가지 많은 클래스, 객체에서 많이 사용된다. 사운드 기능을 쓰는 객체마다 계속 사운드 엔진 객체를 생성해내고 매개변수로 넘기고 하는 것 너무 낭비. 2. 사운드 엔진 객체를 딱 하나를 여러곳에서 공유 할 수 있게 한다. 사운드 엔진은 객체가 여러개일 필요가 없다. 단 하나면 된다. 사운드 엔진의 기능들만 가져다 쓰면 된다. 사운드 엔진의 map 에 저장되어있는 사운드들 굳이 다 객체로 찍어낼 필요 없이 기존에 만들어진 사운드 엔진 객체를 공유하는게 더 효율적이..
명령과 행위 자체를 객체로 만듬 최대한 추상화 해서 변경 사항이 생기더라도 메인 무한루프를 가지는 메인 함수에서는 변경할 것이 없게끔 해야 좋다. 전체 코드 #pragma once #include "Game2D.h" #include namespace jm { class Actor { public: virtual void moveUp(float dt) = 0; virtual void moveLeft(float dt) = 0; virtual void moveRight(float dt) = 0; virtual void moveDown(float dt) = 0; }; class Command { public: virtual ~Command() {} virtual void execute(Actor& actor, ..
#include "Game2D.h" #include "Examples/PrimitivesGallery.h" #include "RandomNumberGenerator.h" #include #include #include "Triangle.h" #include "Circle.h" #include "Box.h" namespace jm { class Example : public Game2D { public: std::vector my_objs; Example() : Game2D() { my_objs.push_back(std::make_unique(Colors::gold, vec2{ -0.5f, 0.2f }, 0.25f)); my_objs.push_back(std::make_unique(Colors::olive..
std::vector 동적배열 std::vector 배열명; : 생성 배열명.size() : 크기값 배열명.resize(n) : n의 크기로 재설정 배열명.push_basck(value) : 벡터 제일 마지막 위치에 새로운 value 추가 배열명.pop_back(value) : 벡터 마지막 값을 삭제 배열명.clear() : 백터의 모든 값을 삭제 auto 추론 키워드 컴파일이 알아서 타입을 결정해준다. new와 delete 힙메모리 활용 type * 포인터 = new type; type만큼의 힙 공간에 메모리를 할당하고 주소를 반환해준다. 할당된 메모리 공간을 포인터가 가리키고 있다. 스마트포인터 make_shared, shared_ptr, unique_ptr 포인터처럼 동작하는 클래스 템플릿으로 사용..
class 클래스명 : public 상속할클래스명 가상함수 자식클래스에는 있는데 부모클래스에는 없는 함수를 가지고 있는척 하게(컴파일되게) 해주는 기능 함수 virtual 자식클래스에 오버라이드 된 함수가 있다면 그걸 컴파일하게 함 부모클래스에 virtual이 붙은 함수를 자식클래스에서 오버라이드해서 사용하려면 뒤에 붙은 함수까지 다 적어야 하고 오버라이드를 했다는것을 알리기 위해 override를 적는다. 순수가상함수 virtual void 함수명() const = 0; 형식 몸체는 없고 선언만 부모클래스에서 해서 누군가 빌드를 해서 몸체가 없다는 오류코드를 확인하면 순수가상함수를 오버라이드하는 자식클래스에서 몸체를 작성하게 하도록 하는 시스템
객체지향의 장점 1. 속성이 조금씩만 다른 결과물들은 하나의 클래스와 그 안에 함수들을 구현해 놓고 매개값만 속성에 따라 바꿔주면 최소한의 코드로 수많은 여러가지 결과물을 만들어낼 수 있다. 2. 속성에 따라 여러가지를 생성할때 멤버함수들로 구분을 해놓았기 때문에 헷갈리지 않는다. 3. 추상적인 개념을 정해놓고(class) 그 개념의 속성들을 가지치기로 기능들(멤버함수)을 분류해 구현할 수 있다.
Roble
'C++' 태그의 글 목록 (2 Page)