본문 바로가기

cpp59

24. 클라스 템플릿(Class Template) 주조(Template)는 이름에서도 알 수 있다시피 찍어낼 수 있는 틀을 만들 수 있는 기능이다. 템플릿을 이용한 함수는 /SUMMORIZE에서 계속 사용하고 있기 때문에 클라스의 경우를 살펴보자. 클라스 템플릿(Class Template) ▼ 헤더파일(.h/.hpp) 파일에 모두 들어가야한다. #ifndef __POINT2D_H__ #define __POINT2D_H__ template class Point2D { private: T m_x; T m_y; public: Point2D(T _x, T _y); ~Point2D(); void SetPoint2D(T _x, T _y); T GetX(); T GetY(); }; template Point2D::Point2D(T _x, T _y) { m_x = _.. 2021. 1. 26.
23. 상속(Inheritance) CPP에서 클라스를 더욱 강력한 존재로 바꿔주는 개념인 상속은 실제 영어권에서는 { 계승 }이란 뜻으로 사용된다고 한다. 이름 그대로 자식 클라스가 부모 클라스를 계승해오는 개념으로 게임 개발 속도를 크게 올려준다. 이번엔 조금은 긴 코드를 통해서 이해해보자. Private, Protected, Public ▼ 간단한(?) 클라스 상속 예시 코드 class Parent { private: int parentPrivateValue; protected: int parentProtectedValue; public: int parentPublicValue; public: Parent() { parentPrivateValue = 1; parentProtectedValue = 2; parentPublicValue .. 2021. 1. 26.
6. 삼각형 회전 시키기 GLM을 사용해서 삼각형을 회전시키는 것은 매우 간단하다. 회전 행렬에 원하는 각도만큼 넣기만 하면 끝이다. (물론 진짜 행렬 연산을 구현했다면 코드가 2배는 길어졌을 것이다.) 1 호도(Radian) 값 설정 회전을 한다는 것은 각도를 변경한다는 의미가 된다. 컴퓨터는 호도(Radian)으로 빠르게 연산하기 때문에 미리 1 호도값을 설정해서 사용하면 편리하다. ▼ 호도는 상수로 설정 해준다. const GLint WIDTH = 720, HEIGHT = 480; //--------------------------------------------- // 1 호도값 const float toRadians = 3.14159265f / 180.0f; //--------------------------------.. 2021. 1. 25.
22. 참조(&)와 포인터(*) 차이 참조(&)는 CPP에서 추가된 새로운 기능이다. 이전에 13. 포인터(Pointer) 에서 등장했었기 때문에 이번에는 둘의 차이점만 간단하게 정리한다. ▼ 참조(&)는 선언과 동시에 초기화가 되어야 한다. int main() { int base = 5; int *pointer; pointer = &base; // OK int &reference; reference = &base; // ERROR return (0); } 코드에서 보는 것처럼 참조(&)를 포인터(*)처럼 선언 후 따로 초기화하려고 하면 에러가 발생한다. int *reference = base; 와 같이 선언과 동시에 초기화를 진행해줘야 한다. 불편해 보일 수도 있지만 이러한 규칙 때문에 참조(&)는 무조건 초기화가 되기 때문에 매번 nul.. 2021. 1. 25.