언어/기타
2007.01.21 01:58

[C++] template의 활용법

조회 수 1037 추천 수 3 댓글 0
?

단축키

Prev이전 문서

Next다음 문서

크게 작게 위로 아래로 댓글로 가기 인쇄
?

단축키

Prev이전 문서

Next다음 문서

크게 작게 위로 아래로 댓글로 가기 인쇄

여지껏 우리는 C++을 이용해 우리가 원하는 프로그램을 작성하는 방법을 알아보았습니다.


 


알고리즘을 통해 자료를 관리하고, GUI를 통해 유저에게 그래픽적인 결과출력을 할 수 있게 되었지요.


 


일반적인 프로그램을 만들던지, 다양한 리소스를 바탕으로 게임을 만들 수도 있을 것입니다.


 


하지만 큰 규모의 프로그램을 만들 때에는 RPG 만들기와 같은 툴을 사용하던 것보다 훨씬 많은 노력과 많은 시간이 필요할 것입니다.


 


오늘 알려드릴 template은 C++ 언어상에서 지원되는 특별한 방식으로써, 비슷한 코드를 더욱 많이 활용할 수 있도록 해주는 기능입니다.


 


 


 


template 기능에 대한 간략한 설명을 먼저 드리자면,


 


유동적으로 변할 수 있는 타입을 준비해, 여러 타입에 관계없이 수행될 수 있는 작업들을 한번에 코드로써 처리하는 방식으로, 표준 라이브러리에도 다양하게 채용되어있는 널리 사용되는 기능입니다.


 


 


 


STL에서 중요하게 사용되고 있는 자료구조인 list 를 통해 설명드리도록 하겠습니다.


 


 


list는 우리가 알고있는 연결리스트를 구현해 놓은 표준 라이브러리로써, 해당 리스트 내에 다양한 자료형식을 보관할 수 있습니다.


 


 


list에 저장하고 싶은 타입명을 <> 내에 써주면 간단하게 사용할 수 있는데,


 


 


 


list<int> a;


- 예제 1-


 


예제 1의 a 라는 리스트는 int형태의 자료를 보관할 수 있는 list로 활용하게 됩니다.


 


다양한 부분에 활용될 코드를 template 형식으로 잘 다듬어 놓는다면 추후에 쉽게 이용할 수 있다는 것이 장점입니다.


 


 


 


 


이제 어느정도 템플릿에 대한 정리가 되셨는지 모르겠습니다.


 


아직 이해가 가지 않으시더라도 템플릿을 사용하는 방법을 보면서 잘 궁리해보시면 금새 이해가 가능하시리라 봅니다.


 


 


 


template<typename T>


class TEMPLATE_CLASS


{


    T b;


    TEMPLATE_CLASS(T a) { b = a; }


    T GET() { return T; }


    void SET(T a) { b = a; }


};


 


 


클래스를 만드는 윗부분에 template<typename T> 라는 문구만 적어준후,


 


내부 구현에서 T라는 알수없는 타입을 사용하고 있는 것이 보입니다.


 


 


맨 위의 문구는 T라는 유동 타입을 사용해서 다양한 타입들에 대응하도록 하겠다 라는 선언과 비슷하며,


 


이후 이 클래스를 사용할 시에는 TEMPLATE_CLASS<int> 와 같은 타입으로 사용해야 합니다.


 


 


 


클래스뿐만 아니라, 개별 함수에도 템플릿을 사용할 수 있는데,


 


template<typename T>


T* switch(bool b, T a)


{


    if (b == true)


       return &a;


    else


       return 0;


};


 


b의 값에 따라 T의 포인터를 반환할지 안할지를 구현하는 함수입니다.


 


이런 식으로 코드 재사용성을 높이면, 한 프로젝트뿐만 아니라, 다양한 프로젝트에 사용할 수 있는 범용 라이브러리를 개인적으로 구축할 수 있게 될 것이며, 그것이 곧 개인적인 자산이라고 부를만큼 값진 것이라는 것을 느낄 수 있을 것입니다.


 


 


 


지금까지 해드린 강의들은 C++에 대한 전반적인 이야기를 해드린 것에 지나지 않습니다.


 


한 챕터 부분에도 세부적인 사항들이 너무나 많아, 다른 누군가에게 배운다는 것이 거의 불가능한 부분들이 그런 부분이지요.


 


OOP에서의 상속 관계에 따른 오버로딩, 오버라이딩에 따른 함수 실행 문제, 포인터를 이용한 동적 변수 생성중에 생기는 메모리 누수문제..


 


이런 것들은 여러분이 직접 코딩을 하면서 겪게 될 부분이며, 매우 중요한 부분입니다.


 


그것에 대한 답을 찾아 보는 것도 좋은 경험이 될 수 있겠지요.


 


 


 


마지막으로, C++ 관련 강의는 오늘로써 종료하게 된다는 것을 알려드립니다.


 


그동안 C++을 이용한 프로그래밍에 대해 열의를 갖고 꾸준히 공부해오신 분들에게 축하의 말씀을 드립니다.


 


 


앞으로도 공부도중 막히는 부분이 있다면, 저에게 개인적으로 질문을 주시거나 프로그래밍에 대한 지식을 공유할 수 있도록 개설한 소모임 GPDG(Game Programing Developer Group)에 오셔서 관심있으신 여러 분들과 교류를 해보시길 바랍니다.


 


 


 


근 몇달동안 수고하셨습니다.

?

  1. 물체 밀어서 움직이는 이벤트 조금 더 쉽게 하는 법

    Date2018.01.02 CategoryRPG Maker Byzero? Views644
    Read More
  2. [마지막 3명 모집] [취업연계무료교육] VR/AR 게임 콘텐츠 전문가 양성 과정 교육생 모집

    Date2017.07.14 Category언어/기타 By황금상자 Views702
    Read More
  3. rpg vxa 로 겜만들때 데미지 설정 공식[링크]

    Date2017.06.08 CategoryRPG Maker By준E Views740
    Read More
  4. [꿀팁] 간단하게 만들 수 있는 실시간 전투 시스템

    Date2017.03.31 CategoryRPG Maker By준E Views2019
    Read More
  5. JSON parser 변환데이터 저장시 생기는 Object Too Deep 해결하기

    Date2016.12.24 Category언어/기타 Bytitle: 댓글러lklslel Views851
    Read More
  6. 앙뜨프리너십에서 해커톤 부트캠프 모집중이네요

    Date2016.11.08 Category언어/기타 By마나님이 Views908
    Read More
  7. RPG MV에서 플러그인 오류의 원인에 대하여

    Date2016.07.08 CategoryRPG Maker Bytitle: 댓글러lklslel Views2359
    Read More
  8. RPG MV 게임 도중에 윈도우 스킨 파일 자체를 통째로 바꿔버리는 방법 (출처: HIME)

    Date2016.07.08 CategoryRPG Maker By최저 Views1627
    Read More
  9. 게임의 버전을 짜 보자! - 유의적 버전 2.0.0

    Date2016.06.07 Category언어/기타 ByYanggaeng Views1123
    Read More
  10. 텍스트 대화 도중 메뉴 여는 방법을 알아냈습니다!

    Date2016.03.12 CategoryRPG Maker By정궈니 Views2938
    Read More
  11. rpgmv 마우스 지원과 터치 지원이 되니.

    Date2015.10.25 CategoryRPG Maker By팡소리 Views1011
    Read More
  12. RPG Maker MV 와 AJAX를 이용한 웹통신 관련 영상.

    Date2015.10.25 CategoryRPG Maker ByHT9MAN Views2246
    Read More
  13. RPG게임 뻔한요소들.

    Date2015.10.05 Category언어/기타 Bytitle: 천무천무 Views1644
    Read More
  14. 자바스크립트와 관련해서 참고할 만한 사이트들

    Date2015.10.04 Category언어/기타 ByMARCO Views921
    Read More
  15. 꿀잼이군요!

    Date2015.05.20 Category언어/기타 By사람님[대회참가] Views873
    Read More
  16. [RPG2000/3 팁] 간편한 이벤트 단축키

    Date2015.04.06 CategoryRPG Maker Bytitle: 자게이하앵 Views1833
    Read More
  17. [RPG2000/3 팁] 간편한 이벤트 단축키

    Date2015.04.05 CategoryRPG Maker Bytitle: 자게이하앵 Views748
    Read More
  18. [강의링크] 대비법칙-색상대비-밀당의 재미 약한 반대색 설계

    Date2015.04.02 Category언어/기타 Bytitle: 천무천무 Views636
    Read More
  19. 오다 주웠습니다.

    Date2015.03.30 Category언어/기타 By사람님[대회참가] Views917
    Read More
  20. 무료 이미지 사이트 Pixabay!

    Date2015.03.28 Category언어/기타 By나작소 Views909
    Read More
Board Pagination Prev 1 2 3 4 5 6 7 8 9 10 ... 51 Next
/ 51


[개인정보취급방침] | [이용약관] | [제휴문의] | [후원창구] | [인디사이드연혁]

Copyright © 1999 - 2016 INdiSide.com/(주)씨엘쓰리디 All Rights Reserved.
인디사이드 운영자 : 천무(이지선) | kernys(김원배) | 사신지(김병국)