Introduction 클래스 템플릿이 다른 클래스 템플릿을 상속 할 경우, 무엇을 주의 하라는지 설명 하고 있다. 클래스 템플릿을 상속 하고 잘못 사용 했을 경우, "가상 함수"가 제 역활을 못할 수 있거나, 컴파일 자체가 되지 않을 수 있으므로, 이 부분은 꼭 봐야 할 것이다. Content 시작하기에 앞서, 한가지 사실을 미리 알아두어야 한다. 바로 기반이 되는 클래스 템플릿이 파생 되는 클래스 템플릿에 기입 된 파라미터에 종속 될 경우와 종속되지 않을 경우, 이름을 찾는 규칙이 변화 한다는 사실이다. 이 두 경우 중 종속되지 않을 경우(기반 클래스 템플릿이 파생 클래스 템플릿에 기입된 템플릿 파라미터에)가 더 적은 규칙을 가지고 있으므로, 이를 먼저 정리하겠다. 1. 종속되지 않은 기반 클래스일 ..
템플릿 검색 결과
사설 티스토리 임시저장 본 으로 유지하고 있다가 다 날렸슴.. 내 3시간.. 절대쌍교의 가의신공이 생각나는군. 배운게 있다면, 독립적 구성으로 4단계로 구분짓고 저장하는 습관을 기르면 괜찮겠군. 이라고 생각 됨. 템플릿에서 이름을 평가하는 규칙이 왜 중요한가? 가뜩이나 C++에서 이름을 평가하는 방법이 어렵다. 그래서 템플릿까지 끼면 더 어렵다. 어려운 것을 모르고 지나가면, 큰코 다친다. 그래서 중요하다. 만약 C/C++을 공부한 사람이라면, "이게 왜 어려운데?" 라고 반문할 수 있다. 상대적으로 어려운 것이니 그러려니 하자.(운동하고 있는 문체가 운동하고 있는지를 관찰하려면, 다른 운동을 하는 물체와 비교 할 수 밖에 없는 이치와 같다. - 아인슈타인) 템플릿에서 이름을 평가하는 규칙을 알기 전에,..
개요 5.4 템플릿 템플릿 파라미터 5.5 0 초기화 5.6 함수 템플릿에서 문자열 리터럴을 인자로 사용 5.4 템플릿 템플릿 파라미터 ( template template paramater ) 내가 보는 책은 "C++ Template" 이다. 이 책에 이번 주제인 template tempalte paramater 를 설명하고 있는데, 난 차례대로 "이것이 바로 템플릿 템플릿 파라미터이다" 라고 말해주는 코드를 컴퓨터에 입력 했다. #include template class Stack { private: CONT m_; }; int main( void ) { Stack stack; return 0; } 그리고 이것을 컴파일 해보면, 알겠지만, 클래스 템플릿의 두번째 템플릿 파라미터가 템플릿인 것이 보인다...
개요 저번장까지 이건 이렇고 저건 저렇다 라고 설명한 한 항목이였다. 이번 장은, 실질적으로 코드를 작성하는데 도움이 될 만한 몇가지 문법 들을 설명한다. 5.1 typename 5.2 this 5.3 멤버 템플릿 5.4 템플릿 템플릿 파라미터 5.5 0 초기화 5.6 함수 템플릿에서 문자열 리터럴을 인자로 사용 본문 5.1 typename이란 무엇이고, 어떤 용도인가? 지금까지 typename 은 템플릿 파라미터를 선언할 때 사용하는 키워드로 알고 있었지만, 여기에 한가지 의미가 더 있었다. 바로 "이것은 타입이다" 라고 알려 주는 의미이다. "이것은 타입이다"라는 의미가 왜 필요한가? 만약, 템플릿 파라미터가 클래스일 떄, 그 내부 타입이, "타입" 이라고 일러주지 않는 다면, 컴파일러가 에러를 벹어..
개요 지금까지 함수, 클래스 템플릿의 파라미터는 데이터형만 있는 것처럼 정리하였으나, 일반값도 있다. 이번 장은 데이터 형이 아닌 템플릿 파라미터란 무엇이고, 어떻게 사용하며, 주의해야 할 사항에 대해서 정리 되어 있다. 본문 데이터형이 아닌 템플릿 파라미터는 무엇인가? 상수로 평가되는 모든 값들이다. 하지만 예외적으로, 부동소수점(float, double) 상수와 문자열 상수(char *, wchar_t *)는 템플릿 파라미터로 사용 할 수 없다. 그래서 코드짜면 다음과 같이 코딩 할 수 있다. // 데이터형이 아닌 템플릿 파라미터 template class Stack { private: T elems[MAXSIZE]; }; 여기서 보듯이 첫번째 템플릿 파라미터는 데이터형이지만, 두번째 파라미터는 인트..
클래스 템플릿이란 무엇인가? 함수 템플릿 처럼, 클래스도 여러개의 데이터형으로 바뀔 수 있는 것을 말한다. 이러한 클래스 템플릿은 컨테이너류에 가장 많이 쓰이며, 대표적인 것으로는 std::vector 가 있겠다. 클래스 템플릿을 어떻게 선언하는가? template class Stack { //... }; 위에 처럼 선언할 수 있으며, typename 대신 class 를 사용 할 수 있다. 여기서 T는 멤버 함수나 멤버 변수를 선언 할 때 사용 된다. 즉, 다음과 같이 사용 될 수 있다. #include template class Stack { public: Stack(); void push(T const & ) ; void pop(); T top() const; private: std::vector e..
최근댓글