Slide 1

Similar documents
PowerPoint Template

1. auto_ptr 다음프로그램의문제점은무엇인가? void func(void) int *p = new int; cout << " 양수입력 : "; cin >> *p; if (*p <= 0) cout << " 양수를입력해야합니다 " << endl; return; 동적할

1. 객체의생성과대입 int 형변수 : 선언과동시에초기화하는방법 (C++) int a = 3; int a(3); // 기본타입역시클래스와같이처리가능 객체의생성 ( 복습 ) class CPoint private : int x, y; public : CPoint(int a

Slide 1

C++ Programming

Microsoft PowerPoint - chap06-2pointer.ppt

[ 마이크로프로세서 1] 2 주차 3 차시. 포인터와구조체 2 주차 3 차시포인터와구조체 학습목표 1. C 언어에서가장어려운포인터와구조체를설명할수있다. 2. Call By Value 와 Call By Reference 를구분할수있다. 학습내용 1 : 함수 (Functi

PowerPoint 프레젠테이션

4 장클래스와객체 클래스와객체 public과 private 구조체와클래스객체의생성과생성자객체의소멸과소멸자생성자와소멸자의호출순서디폴트생성자와디폴트소멸자멤버초기화멤버함수의외부정의멤버함수의인라인함수선언 C++ 프로그래밍입문

Slide 1

Microsoft PowerPoint - C++ 5 .pptx

Slide 1

C++ Programming

Microsoft PowerPoint - additional08.ppt [호환 모드]

설계란 무엇인가?

Microsoft PowerPoint - additional-11_13l.ppt [호환 모드]

PowerPoint Template

설계란 무엇인가?

금오공대 컴퓨터공학전공 강의자료

Microsoft PowerPoint - additional01.ppt [호환 모드]

Microsoft PowerPoint - Chapter 6.ppt

<432B2BC7C1B7CEB1D7B7A1B9D628BABBB9AE5FC3D6C1BE295B315D2E687770>

Microsoft PowerPoint - additional07.ppt [호환 모드]

Slide 1

Microsoft PowerPoint - Chap12-OOP.ppt

쉽게 풀어쓴 C 프로그래밍

Slide 1

Microsoft PowerPoint - 09-C++-7-Template.pptx

PowerPoint Presentation

PowerPoint Presentation

구조체정의 자료형 (data types) 기본자료형 (primitive data types) : char, int, float 등과같이 C 언어에서제공하는자료형. 사용자정의자료형 (user-defined data types) : 다양한자료형을묶어서목적에따라새로운자료형을

슬라이드 1

Visual C++ & OOP Fundamentals ( 2005/1/31~2005/2/4)

C++ Programming

쉽게 풀어쓴 C 프로그래밍

쉽게 풀어쓴 C 프로그래밍

A Dynamic Grid Services Deployment Mechanism for On-Demand Resource Provisioning

<4D F736F F F696E74202D2036C0CFC2B05FB0B4C3BCC1F6C7E2C7C1B7CEB1D7B7A1B9D62E707074>

Microsoft PowerPoint - 8ÀÏ°_Æ÷ÀÎÅÍ.ppt

11장 포인터

02장.배열과 클래스

1. 클래스와배열 int 형배열선언및초기화 int ary[5] = 1, 2, 3, 4, 5 ; for (int i = 0; i < 5; i++) cout << "ary[" << i << "] = " << ary[i] << endl; 5 장클래스의활용 1

JAVA PROGRAMMING 실습 05. 객체의 활용

Design Issues

유니티 변수-함수.key

Microsoft PowerPoint - additional06.ppt [호환 모드]

윤성우의 열혈 TCP/IP 소켓 프로그래밍

PowerPoint Presentation

Microsoft PowerPoint - additional03.ppt [호환 모드]

PowerPoint Template

윤성우의 열혈 TCP/IP 소켓 프로그래밍

C++ Programming

gnu-lee-oop-kor-lec06-3-chap7

Chapter 6 Objects and Classes

8. 클래스 D는클래스 A, 클래스 B, 클래스 C로부터상속받아맊들고싶다. 아래빈칸을채우시오. ( 대소문자주의하시오 ) class D { ; Student s; 11. 다음프로그램의실행결과는? 9. 다음프로그램의실행결과는? class A{ A(){cout << " 생성

Microsoft PowerPoint - chap06-1Array.ppt

Microsoft PowerPoint - ch07 - 포인터 pm0415

C# Programming Guide - Types

PowerPoint Presentation

JAVA PROGRAMMING 실습 08.다형성

1. 표준입출력 C++ : C의모든라이브러리를포함 printf, scanf 함수사용가능예 : int, double, 문자열값을입력받고출력하기 #include <cstdio> int ivar; double dvar; char str[20]; printf("int, dou

Microsoft PowerPoint - CSharp-10-예외처리

Microsoft PowerPoint - chap10-함수의활용.pptx

Microsoft PowerPoint - 2강

<4D F736F F F696E74202D20C1A63038C0E520C5ACB7A1BDBABFCD20B0B4C3BC4928B0ADC0C729205BC8A3C8AF20B8F0B5E55D>

KNK_C_05_Pointers_Arrays_structures_summary_v02

chap x: G입력

Microsoft PowerPoint - chap02-C프로그램시작하기.pptx

(Microsoft PowerPoint - 07\300\345.ppt [\310\243\310\257 \270\360\265\345])

(Microsoft Word - \301\337\260\243\260\355\273\347.docx)

1. 상속의기본개념 다음과같은문제를위한클래스설계 자동차 속성 : 색상, 배기량, 현재속도 메서드 : 가속하라, 멈춰라, 시동을켜라 트럭 속성 : 색상, 배기량, 현재속도, 최대중량 메서드 : 가속하라, 멈춰라, 시동을켜라 택시 속성 : 색상, 배기량, 현재속도, 요금,

슬라이드 1

설계란 무엇인가?

2002년 2학기 자료구조

<322EBCF8C8AF28BFACBDC0B9AEC1A6292E687770>

Microsoft PowerPoint - java1-lab5-ImageProcessorTestOOP.pptx

C++ 기본문법 정리

Microsoft PowerPoint - chap06-5 [호환 모드]

3장. Hello World

쉽게 풀어쓴 C 프로그래밍

1 장 C 언어복습 표준입출력배열포인터배열과포인터함수 const와포인터구조체컴파일러사용방법 C++ 프로그래밍입문

PowerPoint 프레젠테이션

임베디드시스템설계강의자료 6 system call 2/2 (2014 년도 1 학기 ) 김영진 아주대학교전자공학과

쉽게 풀어쓴 C 프로그래밍

강의계획서 1. 강의개요 학습과목명 객체지향프로그래밍 Ⅰ 학점 3 학점교 강사명교 강사전화번호 강의시간 4시간강의실수강대상 2. 교과목학습목표 4차산업혁명시대의도래로컴퓨터와프로그래밍에대한관심이커지고있으며, 여러분야에서소프트웨어의중요성을강조하며, 새시대를이끌

(Microsoft PowerPoint - 11\300\345.ppt [\310\243\310\257 \270\360\265\345])

Microsoft PowerPoint - Chapter 10.ppt

Microsoft PowerPoint - 9ÀÏ°_ÂüÁ¶ÀÚ.ppt

PowerPoint Presentation

Slide 1

Microsoft PowerPoint - Chapter 1-rev

Microsoft PowerPoint - a10.ppt [호환 모드]

금오공대 컴퓨터공학전공 강의자료

1. 기본형의형변환복습 C/C++ 형변환의종류 자동형변환 ( 묵시적형변환 ) 강제형변환 ( 명시적형변환 ) 기본형의자동형변환의예 1. 배열 to 포인터변환 배열명은해당배열의첫번째원소의 주소로변환됨 int ary[10]; int *pary = ary; 2. 함수 to 포

Chapter 4. LISTS


윤성우의 열혈 TCP/IP 소켓 프로그래밍

PowerPoint Template

예제 2) Test.java class A intvar= 10; void method() class B extends A intvar= 20; 1"); void method() 2"); void method1() public class Test 3"); args) A

The C++ Programming Language 4 장타입과선언 4.11 연습문제 Hello,world! 프로그램을실행시킨다. 프로그램이컴파일되지않으면 B3.1 을참고하자. #include<iostream> //#include 문, 헤더파일, 전처리지시

Transcription:

SeoulTech 2011-2 nd 프로그래밍입문 (2) Chapter 16. 템플릿 박종혁교수 (http://www.parkjonghyuk.net) Tel: 970-6702 Email: jhpark1@snut.ac.kr

Learning Objectives 함수템플릿 구문, 정의 컴파일합병 클래스템플릿 문법 예 : 배열템플릿클래스 템플릿및상속 예 : 부분적으로채워진배열템플릿클래스 16-2

개요 C++ templates 함수와클래스에대한매우 " 일반 " 정의허용 입력한이름대싞실제유형의 " 매개변수 정확한정의는실행시간에결정 16-3

함수템플릿 swapvalues: void swapvalues(int& var1, int& var2) { int temp; temp = var1; var1 = var2; var2 = temp; } 오직 int 형변수에적용 어느종류의자료형에서도동장! 16-4

함수템플릿 vs. 오버로딩 문자형에함수오버로드가능 : void swapvalues(char& var1, char& var2) { char temp; temp = var1; var1 = var2; var2 = temp; } 주의 : 코드는거의동일! 차이점은 3 장소에서사용되는유형 16-5

함수템플릿문법 swap values 함수는어느자료형이든가능 : template<class T> void swapvalues(t& var1, T& var2) { T temp; temp = var1; var1 = var2; var2 = temp; } 첫번째줄은 "template prefix 컴파일러에게 "template 이라고알려줌 T 는형식매개변수 16-6

Template Prefix Recall: template<class T> "class" 는 "type 이나 "classification 을의미 앞에서사용한 class 와혼동 C++ 은 "class" 자리에키워드 "typename" 을허용 하지만 "class" 라고주로사용 16-7

Template Prefix 2 Again: template<class T> T 는모든종류로교체가능 미리정의되거나사용자정의 (like a C++ class type) 함수정의부 : T 는다른형식처럼사용 참고 : "T 외에다른것이사용되기도하지만 T 는 "traditional" 사용 16-8

함수템플릿정의 swapvalues() 함수템플릿은매우큰정의의 "collection! 각각의가능한유형에대한정의! 컴파일러는필요에따라정의를생성 그러나모든유형에대해정의하는경우 한개의정의 필요한모든유형으로작동 16-9

함수템플릿호출 swapvalues(int1, int2); C++ 컴파일러는템플릿으로두개의정수형인자를사용하는함수를생성 다른타입도마찬가지 필요한정의자동생성 16-10

Another Function Template Declaration/prototype: Template<class T> void showstuff(int stuff1, T stuff2, T stuff3); Definition: template<class T> void showstuff(int stuff1, T stuff2, T stuff3) { cout << stuff1 << endl << stuff2 << endl << stuff3 << endl; } 16-11

showstuff Call showstuff(2, 3.3, 4.4); 컴파일러는함수의정의를생성 T 를더블로교체 두번째인자가더블형이기때문 Displays: 2 3.3 4.4 16-12

Compiler Complications 함수선언및정의 일반적으로구분이필요 템플릿 모든컴파일러에서지원되지않음! 템플릿함수정의는호출하는파일안에안전한장소에위치 16-13

More Compiler Complications 컴파일러의특정요구사항을확인 일부는특정옵션필요 일부는템플릿정의 vs 다른파일 item 들의배열을요구 대부분사용가능한템플릿프로그램레이아웃 : 동일한파일에서사용되는템플릿정의 사용되기전확인한템플릿정의 16-14

Multiple Type Parameters 가능 : template<class T1, class T2> 일반적이지않음 보통하나의교체타입이필요 사용하지않는템플릿매개변수를가질수없음 각정의에서사용해야함 Error otherwise! 16-15

알고리즘추상화 템플릿구현을의미 알고리즘을표현하는일반적이방법 : 알고리즘은모든타입의변수에적용 세부사항을무시 알고리즘의중요한부분에집중 함수템플릿은알고리즘추상화를지원하는방법 16-16

Defining Templates Strategies 일반적함수개발 실제데이터타입사용 일반적인함수완벽하게디버그 템플릿으로변환 필요한경우매개변수와타입이름교체 이점 : 구체적인케이스해결이더쉬움 16-17

템플릿에서부적절한타입 템플릿에서코드는의미를만들어어떠한타입에서도사용할수있음 코드가적절한방식으로행동해야함 예, swapvalues() template function 할당연산자가정의되지않은형식을사용할수없음 Example: an array: int a[10], b[10]; swapvalues(a, b); Arrays cannot be "assigned"! 16-18

Class Templates template<class T> 클래스정의에적용가능 클래스정의에서 "T" 의모든인스턴스는형식매개변수로대체 그냥함수템플릿처럼! 템플릿정의되면, 클래스의객체를선언 16-19

Class Template Definition template<class T> class Pair { public: Pair(); Pair(T firstval, T secondval); void setfirst(t newval); void setsecond(t newval); T getfirst() const; T getsecond() const; private: T first; T second; }; 16-20

Template Class Pair Members template<class T> Pair<T>::Pair(T firstval, T secondval) { first = firstval; second = secondval; } template<class T> void Pair<T>::setFirst(T newval) { first = newval; } 16-21

Template Class Pair 클래스의객체는 T 타입값의쌍을갖음 다음개체를선언가능 : Pair<int> score; Pair<char> seats; Example uses: score.setfirst(3); score.setsecond(0); 16-22

Pair Member Function Definitions 멤버함수정의 : 각각의정의는템플릿자체 정의전에템플릿 prefix 필요 Class name before :: is "Pair<T>" Not just "Pair" 생성자이름 "Pair" 소멸자이름 "~Pair" 16-23

Class Templates as Parameters int addup(const Pair<int>& the Pair); call-by-reference 표준타입에템플릿타입을사용가능 16-24

Restrictions on Type Parameter T에서합당한타입은대체가능 고려 : 할당연산자는 "well-behaved" 복사연산자작동 T 가포인터를포함하면, 소멸자가적합해야함 함수템플릿과유사한문제 16-25

Type Definitions 새로운클래스타입이름을정의가능 특별한클래스템플릿이름ㅍ현 Example: typedef Pair<int> PairOfInt; PairOfInt pair1, pair2; 이름도매개변수로사용하거나다른곳에타입이름으로사용가능 16-26

Friends and Templates Friend 함수는템플릿클래스와함께사용가능 일반클래스와동일 단순히적절한형식매개변수를요구 템플릿클래스의 friend 사용은일반적 특히연선자오버로드 16-27

Predefined Template Classes vector class 템플릿클래스 Another: basic_string template class 어떤타입요소의문자열을다룸 예, basic_string<char> works for char s basic_string<double> works for doubles basic_string<yourclass> works for YourClass objects 16-28

basic_string Template Class "string basic_string<char> 모든멤버함수는 basic_string<t> 와유사하게동작 16-29

템플릿및상속 파생템플릿클래스 템플릿이나비템플릿클래스에서파생가능 파생클래스는하나의템플릿클래스 문법은일반클래스에서파생된일반클래스와동일 16-30

요약 함수템플릿 타입에대한매개변수와함께함수를정의 클래스템플릿 클래스의부분에대한매개변수와함께클래스를정의 Predefined vector, basic_string 는템플릿클래스 템플릿베이스클래스에서파생된템플릿클래스정의가능 16-31