전 좀더 안 간단하게 설명해 볼께요.
일단 OOP 같은 식으로 General Programming이란 개념이 있는데..
이게 있는지도 몰랐는제 -.- C++ 표준이 정해질 시기의 글을 보니까 나오더라구요..
여하튼 그 General Programming이 엄청 각광 받을 거라고 어쩌구 했는데..
실제로 그렇게 됐는지는 잘 모르겠구... (제가 보기엔 안 된거 같은데..)
여하튼.. 그 제네럴 프로그래밍을 지원하는 실질적인 언어적인 기능이 템플릿 이라는 건데..
Templete 말그대로 어떤 틀에다가 먼가를 넣어주면 틀에 맞게 결과를 내 주는... --; 말이 어렵나..
그런거에요.. 일반적으로 말하는 템플릿... 바고 그거거든요...
그러니까 그냥 기존 기능으로 하려면 스택 자료구조를 구현하려면 Int형 자료를 담는 스택..
Float형 자료를 담는 스택.. 등등을 따로 만들어 줘야 합니다..
OOP적인 관점으로 보자면 -_- 스택 추상 클래스가 있고 그 아래에 그것을 상속한 각 자료형을 위한
스택 클래스가 있겠죠... 실제로 자바 같은 언어는 이런 식으로 구현을 합니다..
자바에 템플릿 기능이 아마 없죠..? 그리고 OOP 학자들은 STL과 같은 방식보다는 위의 방식을
더 조아할지도 모르고요.. 여하튼... 흠냐.. STL을 좋지 않은 거라고 주장하는 고수님들도 더러
있는 것으로 보입니다. 저도 초보때 그런 글 읽고서 STL 나쁜거군.. 하구 거들떠 보지도 않고
있었습니다.. 여하튼 지금은 진짜 좋은 것 같긴한데.. 흠이 하나 있어요.
템플릿 기능이란게 그 구현상에 난점이 있기 때문에 비주얼 씨나 씨 빌더 정도만 제대로 지원을
하지 리눅스 계열의 g++ 등등은 제대로 지원이 안되거든요... 그래서 Ansi C++로 짜도
서로 호환이 안된다는... 호환이 되더라도 서로 템플릿의 구현 방식에 차이가 나기 때문에
예측할 수 없는 결과가 초래된다는.... 그리구 다른 언어로 포팅할때두 문제가 되고요.
여하튼... 그러고 템플릿을 컴파일러에서 지원하는 방식이 머냐하면.. (이게 할려던 말인데 -_-)
흠... 그러니까 define과 비교를 해볼수 있는데.. 전처리기가 한번 소스를 돌아서(passing이라고 하나요?)
매크로 상수들을 다 치환해 주지요??
템플릿도 그러한 기능을 합니다. 컴파일을 하면서 템플릿 구문을 만나게 되면 해당 소스 내용을
생성합니다...
그러니까 템플릿 클래스를 작성한 부분이 있을 테구
그 템플릿 클래스를 사용할때
class_a a<자료형>.... 이런 식으로 하던가요?
이 부분을 만나게 되면 템플릿 원형을 참고해서 그 해당 자료형을 사용하는 클래스를
생성해 버립니다.
... 이해가 가실려나.. 제가 봐도 이상한데.. --;;
여하튼 그 말씀하신 이펙티브 STL에 잘 나오겠죠.. 저도 사놓고 보질 않아서리 -_-;;;
제가 위에 주절거린 얘기는 오렐리 사의 Practical C++ Programming(제목이 정확할려나..)이라는
책에 나온 얘기입니다.
지영배 님이 쓰신 글 :
:
: C++의 표준 템플릿 라이브러리(Standard Template Library: STL)
:
: 입니다. -_-
:
: C++ 책의 템플릿 부분을 보시면 될것 같습니다.
:
: 저도 이 부분은 안읽고 그냥 쓱싹 넘어가서..잘 모릅니다. -_-
:
: 조만간에 볼 생각. -_-
:
: 그럼... 스르르륵..
:
:
:
|