Chapter 14. 템플릿(Template) 2

Slides:



Advertisements
Similar presentations
비즈쿨 - 정 성 욱 - - 금오공고 비즈쿨 - 정 성 욱 1. 나는 각 단원들의 활동들에 성실하게 참여 하겠습니다. 우리의 다짐 2. 나는 나와 전체의 발전을 위해 각 멘토들의 지도에 순종하겠습니다. 3. 나는 각 단원들을 숙지함으로써 비즈니스 마인드를 함양하고 자신의.
Advertisements

폭력. 폭력이란 무엇인가 우상의 눈물 물리적인 폭력 ( 최기표 ) VS 지능적인 폭력 ( 임형우, 담임선생님 )
1 박 2 일 !!! 인천마장초등학교 유수아. 1 박 2 일 멤버 인기순 위 1 위 이승기 2 위 엄태웅 3 위 은지원 4 위 김종민, 이수근 ※인터넷에서 본것이기 때문에 사람에따라 서 다를 수 있다. ※
석관중앙교회 5남전도회 석 관 중 앙 교 회 회원 소식 통권 05-04호 발행일 : 2005년 04월 회 장 : 장진호 집사
Kim Yeon Hee 8장. 상속과 다형성 Kim Yeon Hee.
1. 던전 디자인 개요_1 1. ‘던전’ 룬스톤은 던전 한 층에도 여러 개가 존재하며, 각 룬스톤 마다 영향을 미치는 범위가 설정되어 있다. 룬스톤이 영향을 주는 범위에 일정시간 사용자가 위치해 있게 되면 사용자 캐릭터는 ‘유령화’ 되어 버리기 때문에, 사용자는.
지역사회복지론 1조. 요양보호시설에 대해서 황성국 임재형 이동영
C++ Espresso 제1장 기초 사항.
객체지향 프로그래밍.
Chapter 9 히키코모리(은둔형 외톨이)
1장. 이것이 C 언어다.. 1장. 이것이 C 언어다. 1-1 C 언어의 개론적 이야기 프로그래밍 언어란 무엇인가? 컴파일이란 무엇인가? 사람과 컴파일러가 이해할 수 있는 약속된 형태의 언어 C 언어도 프로그래밍 언어 중 하나이다. 컴파일이란 무엇인가? 프로그래밍.
I 문학의 개념과 역할 1. 문학의 개념 (1) 언어 예술로서의 문학 (2) 소통 활동으로서의 문학
4. 목적론적 윤리와 의무론적 윤리 01. 경험주의와 이성주의 01. 경험주의와 이성주의 02. 결과론적 윤리와 공리주의
Chapter 6 구조체.
실전 프로젝트 2 : 숫자야구 숫자 야구를 구현해보자.
Chapter 02 자바 기본구조 자바 프로그래밍의 기초적인 문법을 소개
8. 객체와 클래스 (기본).
명품 JAVA Essential.
C 10장. 함수의 활용 #include <stdio.h> int main(void) { int num;
10장 템플릿과 표준 템플릿 라이브러리(STL)
윤성우의 열혈 C 프로그래밍 윤성우 저 열혈강의 C 프로그래밍 개정판 Chapter 14. 포인터와 함수에 대한 이해.
윤성우의 열혈 C++ 프로그래밍 윤성우 저 열혈강의 C++ 프로그래밍 개정판 Chapter 03. 클래스의 기본.
윤성우의 열혈 C 프로그래밍 윤성우 저 열혈강의 C 프로그래밍 개정판 Chapter 02. 프로그램의 기본구성.
C ++ 프로그래밍 시작.
윤성우의 열혈 C++ 프로그래밍 윤성우 저 열혈강의 C++ 프로그래밍 개정판 Chapter 08. 상속과 다형성.
7. 자극과 반응 7-2. 신경계 3. 여러 가지 반응.
This, static, final 지정 예약어 자바 4대 중첩 클래스
김 정 석 Web Programming 김 정 석
C++ 개요 객체지향 윈도우즈 프로그래밍 한국성서대학교 유일선
C++ 프로그래밍 년 2학기 전자정보공학대학 컴퓨터공학부.
Chapter 3 클래스. 최호성.
13. 포인터와 배열! 함께 이해하기.
추상 데이터 타입 정의하기 Defining abstract data types
개항기 조선과 동아시아 박 범 한국역사입문Ⅱ.
윤성우의 열혈 C 프로그래밍 윤성우 저 열혈강의 C 프로그래밍 개정판 Chapter 11. 1차원 배열.
11장. 1차원 배열 IT응용시스템공학과 김 형 진 교수.
Chapter 1 C와는 다른 C++. 최호성.
칼빈의 생애와 개혁자로의 변모 사학과 김종식.
제 12장. 사용자 정의형으로서의 클래스 학기 프로그래밍언어및실습 (C++).
국제의료관광 관련 법, 제도.
윤성우의 열혈 C 프로그래밍 윤성우 저 열혈강의 C 프로그래밍 개정판 Chapter 09. C언어의 핵심! 함수!
3장. 변수와 연산자. 3장. 변수와 연산자 3-1 연산자, 덧셈 연산자 연산자란 무엇인가? 연산을 요구할 때 사용되는 기호 ex : +, -, *, / 3-1 연산자, 덧셈 연산자 연산자란 무엇인가? 연산을 요구할 때 사용되는 기호 ex : +, -, *, /
Chapter3 : 객체지향의 개념 3.1 객체지향(object-oriented)과
자바 5.0 프로그래밍.
윤성우의 열혈 C 프로그래밍 윤성우 저 열혈강의 C 프로그래밍 개정판 Chapter 22. 구조체와 사용자 정의 자료형1.
3장. 클래스의 기본.
멤버 함수인 operator+()가 실행, 또는 전역 함수인 operator+()가 실행 Point p3 = p1+p2; 에서
대구의 부도심 대구의 주요축 동대구 부도심 4조 강민석 / 박성균 / 최은지/ 황재현/김예지.
5. 논리적 자료표현 : 구조체.
18장. 다차원 배열 그리고 포인터.
제 11장. 템플릿과 STL 학기 프로그래밍언어및실습 (C++).
자바 5.0 프로그래밍.
사도행전 13장 22절 말씀 –아멘 다 윗 을 왕 으 로 세 우 시 고 증 언 하 여 이 르 시 되 내 가 이 새 의 아 들
CHAPTER 9-1 한국의 사회복지정책 - 사회보험제도 -
제 8장. 클래스의 활용 학기 프로그래밍언어및실습 (C++).
2015년 2학년 1반.
직장생활 예절 ① - 인사 1.내가 먼저 [인사의 5point] 2.상대방의 눈을 보고 미소지으며 3.상대방에 맞춰서
경찰행정과 세미나 결과를 공개해야한다. VS 비공개로 해야한다. 경찰의 근무성적평정 제도.
제 14 장 응용 계층과 클라이언트-서버 모델 클라이언트-서버 모델 14.2 동시성 14.3 프로세스 14.4 요약.
캡슐화 (Encapsulation) 두원공과대학 소프트웨어개발과 이 원 주.
18장 표현식 템플릿 Ver 2.01.
실습과제 1번 /* 1. 멤버 변수로 반경 radius를 갖고, 그 값을 모니터에 출력하는
노인학대예방 교육 교육강사 시 설 장 송나겸 보성실버센터.
29장. 템플릿과 STL 01_ 템플릿 02_ STL.
17장. 포인터의 포인터.
Chapter 2. 경영분석을 위한 재무제표 재무제표의 공시.
C 프로그래밍은 매우 도전적인 작업이다. 도전의 이면에 철저한 준비와 체계적인 노력
윤성우의 열혈 C 프로그래밍 윤성우 저 열혈강의 C 프로그래밍 개정판 Chapter 17. 포인터의 포인터.
11장. 1차원 배열.
경찰학 세미나 제 5 강 경찰관직무집행법 2조 5호의 의미 신라대학교 법경찰학부 김순석.
Presentation transcript:

Chapter 14. 템플릿(Template) 2 윤성우의 열혈 C++ 프로그래밍 윤성우 저 열혈강의 C++ 프로그래밍 개정판 Chapter 14. 템플릿(Template) 2

Chapter 14-1. Chapter 13에서 공부한 내용의 확장 윤성우의 열혈 C++ 프로그래밍 Chapter 14-1. Chapter 13에서 공부한 내용의 확장 윤성우 저 열혈강의 C++ 프로그래밍 개정판

Point 클래스 템플릿과 배열 클래스 템플릿 윤성우의 열혈 C++ 프로그래밍 일반적인 배열 클래스 템플릿 BoundCheckArray<int> iarr(50); BoundCheckArray<Point<int>> oarr(50); BoundCheckArray<Point<int>*> oparr(50); typedef Point<int>* POINT_PTR; BoundCheckArray<POINT_PTR> oparr(50); int형 데이터 저장 배열 Point<int> 객체 저장 배열 Point<int>형 포인터 저장 배열 Point<int>형 포인터 저장 배열

템플릿 클래스 대상의 함수선언과 friend 선언 윤성우의 열혈 C++ 프로그래밍 컴파일러가 생성해 내는 템플릿 클래스를 함수의 매개변수 및 반환형으로 지정하는 것도 가능하고 이러한 함수를 대상으로 friend 선언을 하는 것도 가능하다. 결론은 컴파일러가 생성하는 템플릿 클래스의 이름도 일반 자료형의 이름과 차별을 받지 않는다는 것!

윤성우의 열혈 C++ 프로그래밍 Chapter 14-2. 클래스 템플릿의 특수화 윤성우 저 열혈강의 C++ 프로그래밍 개정판

클래스 템플릿 특수화 윤성우의 열혈 C++ 프로그래밍 SoSimple 클래스 템플릿에 대해서 int형에 대한 특수화 √ 클래스 템플릿을 특수화하는 이유는 특정 자료형을 기반으로 생성된 객체에 대해, 구분이 되는 다른 행동양식을 적용하기 위함이다. √ 함수 템플릿을 특수화하는 방법과 이유, 그리고 클래스 템플릿을 특수화하는 방법과 이유는 동일하다.

클래스 템플릿의 부분 특수화 윤성우의 열혈 C++ 프로그래밍 MySimple 클래스 템플릿 MySimple 클래스 템플릿의 <char, int>에 대한 특수화 MySimple 클래스 템플릿의 <T1, int>에 대한 부분적 특수화 T2가 int 인 경우에는 MySimpe<T1, int>를 대상으로 인스턴스가 생성된다. 위와 같이 <char, int>형으로 특수화, 그리고 <T1, int> 에 대해서 부분 특수화가 모두 진행된 경우 특수화가 부분 특수화에 앞선다. 즉, <char, int>를 대상으로 객체 생성시 특수화된 클래스의 객체가 생성된다.

윤성우의 열혈 C++ 프로그래밍 Chapter 14-3. 템플릿 인자 윤성우 저 열혈강의 C++ 프로그래밍 개정판

템플릿 매개변수에는 변수의 선언이 올 수 있습니다. 윤성우의 열혈 C++ 프로그래밍 SimpleArray<int, 5> i5arr; SimpleArray<int, 5>형 템플릿 클래스 템플릿의 인자로 변수의 선언이 올 수도 있다! 템플릿 인자를 통해서 SimpleArray<int, 5>와 SimpleArray<int ,7>이 서로 다른 자료형으로 인식되게 할 수 있다. 이로써 SimpleArray<int, 5>와 SimpleArray<int, 7> 사이에서의 연계성을 완전히 제거할 수 있다. SimpleArray<double, 7> i7arr; SimpleArray<double, 7>형 템플릿 클래스

템플릿 매개변수는 디폴트 값 지정도 가능합니다. 윤성우의 열혈 C++ 프로그래밍 template <typename T=int, int len=7> class SimpleArray { private: T arr[len]; public: T& operator[] (int idx) { return arr[idx]; } SimpleArray<T, len>& operator=(const SimpleArray<T, len> &ref) for(int i=0; i<len; i++) arr[i]=ref.arr[i]; } }; 디폴트 값 지정 가능! int main(void) { SimpleArray<> arr; for(int i=0; i<7; i++) arr[i]=i+1; cout<<arr[i]<<" "; cout<<endl; return 0; } T에 int, len에 7의 디폴트 값 지정! 실행결과

윤성우의 열혈 C++ 프로그래밍 Chapter 14-4. 템플릿과 static 윤성우 저 열혈강의 C++ 프로그래밍 개정판

함수 템플릿과 static 지역변수 윤성우의 열혈 C++ 프로그래밍 실행결과

클래스 템플릿과 static 멤버변수 윤성우의 열혈 C++ 프로그래밍 SimpleStaticMem<int>의 mem은 SimpleStaticMem<int>의 개체간 공유 SimpleStaticMem<double>의 mem은 SimpleStaticMem<int>의 개체간 공유

template<typename T> vs. template<> 윤성우의 열혈 C++ 프로그래밍 템플릿임을 알리며 T가 무엇인지에 대한 설명도 필요한 상황 템플릿과 관련 있음을 알리기만 하면 되는 상황 static 멤버 초기화의 특수화

Chapter 14가 끝났습니다. 질문 있으신지요?