프로그래밍 (object oriented...
TRANSCRIPT
![Page 1: 프로그래밍 (Object Oriented Programming)kowon.dongseo.ac.kr/~dkkang/OOP2008Spring/Chap14-OOP.pdf · Student class Student class 의 의의예 예 이름 – (1) 문자 배열,](https://reader033.vdocuments.mx/reader033/viewer/2022041703/5e43217fb3bc41695b54da91/html5/thumbnails/1.jpg)
객체
객체
객체
객체
지향
지향
지향
지향
프로
그래
밍프
로그
래밍
프로
그래
밍프
로그
래밍
(Obje
ct O
riente
d P
rogra
mm
ing)
(Obje
ct O
riente
d P
rogra
mm
ing)
(Obje
ct O
riente
d P
rogra
mm
ing)
(Obje
ct O
riente
d P
rogra
mm
ing)
14장
강사–
강대
기
![Page 2: 프로그래밍 (Object Oriented Programming)kowon.dongseo.ac.kr/~dkkang/OOP2008Spring/Chap14-OOP.pdf · Student class Student class 의 의의예 예 이름 – (1) 문자 배열,](https://reader033.vdocuments.mx/reader033/viewer/2022041703/5e43217fb3bc41695b54da91/html5/thumbnails/2.jpg)
차례
차례
차례
차례
(Agenda)
(Agenda)
(Agenda)
(Agenda)
�has-a 관
계�
객체
멤버
를가
지는
클래
스(컨
테인
먼트
)�
vala
rray
템플
릿클
래스
�priva
te 상
속과
pro
tecte
d 상
속�
다중
상속
�가
상기
초클
래스
�클
래스
템플
릿만
들기
�클
래스
템플
릿사
용하
기�
템플
릿특
수화
![Page 3: 프로그래밍 (Object Oriented Programming)kowon.dongseo.ac.kr/~dkkang/OOP2008Spring/Chap14-OOP.pdf · Student class Student class 의 의의예 예 이름 – (1) 문자 배열,](https://reader033.vdocuments.mx/reader033/viewer/2022041703/5e43217fb3bc41695b54da91/html5/thumbnails/3.jpg)
코드
의코
드의
코드
의코
드의
재활
용성
재활
용성
재활
용성
재활
용성
�상
속(inherita
nce)
대합
성(c
om
positio
n)
�상
속–
인터
페이
스상
속(inte
rface inherita
nce)
�is
-a 관
계�
C++ 에
서는
public
상속
–구
현상
속(im
ple
menta
tion inherita
nce)
또는
클래
스상
속�
has-a 관
계�
C++ 에
서는
priva
te 상
속,
pro
tecte
d 상
속
�합
성–
컴포
지션
(com
positio
n),
컨테
인먼
트(c
onta
inm
ent)
, 레
이어
링(laye
ring)
–has-a 관
계
�has-a 관
계는
컨테
인먼
트또
는priva
te 상
속
![Page 4: 프로그래밍 (Object Oriented Programming)kowon.dongseo.ac.kr/~dkkang/OOP2008Spring/Chap14-OOP.pdf · Student class Student class 의 의의예 예 이름 – (1) 문자 배열,](https://reader033.vdocuments.mx/reader033/viewer/2022041703/5e43217fb3bc41695b54da91/html5/thumbnails/4.jpg)
Stu
dent cla
ss
Stu
dent cla
ss
Stu
dent cla
ss
Stu
dent cla
ss 의 의의의
예 예예예
�이
름–
(1)
문자
배열
, (2
) 포
인터
와동
적메
모리
할당
, (3
) strin
g 클
래스
�성
적–
(1)
고정
크기
배열
, (2
) 동
적메
모리
할당
, (3
) va
larray
클래
스
�va
larr
ay
클래
스(8
91쪽
) �
클래
스템
플릿
–va
larray<
int>
q_v
alu
es; //
크기
0
–va
larray<
int>
v2(8
); /
/ 크
기8
–va
larray<
int>
v3(1
0,8
); /
/ 크
기8, 초
기값
10
–va
larray<
double
> v
4(g
pa,4
); /
/ 크
기4, 초
기값
gpa
원소
–opera
tor[
](),
siz
e()
, sum
(), m
ax(
), m
in()
![Page 5: 프로그래밍 (Object Oriented Programming)kowon.dongseo.ac.kr/~dkkang/OOP2008Spring/Chap14-OOP.pdf · Student class Student class 의 의의예 예 이름 – (1) 문자 배열,](https://reader033.vdocuments.mx/reader033/viewer/2022041703/5e43217fb3bc41695b54da91/html5/thumbnails/5.jpg)
컨테
인먼
트컨
테인
먼트
컨테
인먼
트컨
테인
먼트
: Stu
dent
: Stu
dent
: Stu
dent
: Stu
dent 클
래스
클래
스클
래스
클래
스설
계설
계설
계설
계(8
92
(892
(892
(892쪽 쪽쪽쪽
) )))
cla
ss S
tudent {
priva
te:
strin
g n
am
e;
vala
rray<double
> s
core
s;
} �구
현을
획득
하지
만,
인터
페이
스는
상속
하지
않음
! (중
요) �
구현
획득
![Page 6: 프로그래밍 (Object Oriented Programming)kowon.dongseo.ac.kr/~dkkang/OOP2008Spring/Chap14-OOP.pdf · Student class Student class 의 의의예 예 이름 – (1) 문자 배열,](https://reader033.vdocuments.mx/reader033/viewer/2022041703/5e43217fb3bc41695b54da91/html5/thumbnails/6.jpg)
컨테
인먼
트컨
테인
먼트
컨테
인먼
트컨
테인
먼트
: Stu
dent
: Stu
dent
: Stu
dent
: Stu
dent 클
래스
클래
스클
래스
클래
스예
제예
제예
제예
제(8
94
(894
(894
(894쪽 쪽쪽쪽
) )))
�ty
pedef
–클
래스
정의
의priva
te 부
분
�exp
licit 키
워드
(688쪽
)
�제
한을
가하
는도
구들
은적
극적
으로
활용
(896쪽
)
�멤
버초
기자
리스
트–
객체
멤버
는상
속의
경우
기초
클래
스와
마찬
가지
로미
리생
성되
어초
기화
되어
야함
–따
라서
, 사
용하
지않
을경
우다
른멤
버객
체들
은디
폴트
생성
자로
생성
됨
–초
기화
순서
에조
심한
다
�클
래스
내부
에선
내포
된객
체의
메써
드를
사용
할수
있음
�필
요하
면헬
퍼메
쏘드
를사
용(8
98쪽
)
![Page 7: 프로그래밍 (Object Oriented Programming)kowon.dongseo.ac.kr/~dkkang/OOP2008Spring/Chap14-OOP.pdf · Student class Student class 의 의의예 예 이름 – (1) 문자 배열,](https://reader033.vdocuments.mx/reader033/viewer/2022041703/5e43217fb3bc41695b54da91/html5/thumbnails/7.jpg)
priva
te
priva
te
priva
te
priva
te 상
속상
속상
속상
속(9
03
(903
(903
(903쪽 쪽쪽쪽
) )))
�priva
te 상
속은
디폴
트상
속방
법임
�public
상속–
인터
페이
스상
속
�priva
te 상
속–
구현
상속
�컨
테인
먼트–
종속
객체
(subobje
ct)
의구
현획
득
![Page 8: 프로그래밍 (Object Oriented Programming)kowon.dongseo.ac.kr/~dkkang/OOP2008Spring/Chap14-OOP.pdf · Student class Student class 의 의의예 예 이름 – (1) 문자 배열,](https://reader033.vdocuments.mx/reader033/viewer/2022041703/5e43217fb3bc41695b54da91/html5/thumbnails/8.jpg)
priva
te
priva
te
priva
te
priva
te 상
속상
속상
속상
속: Stu
dent
: Stu
dent
: Stu
dent
: Stu
dent 클
래스
클래
스클
래스
클래
스
�다
중상
속(9
04쪽
)�
priva
te 멤
버데
이터
를가
질필
요가
없음–
상속
되는
두기
초클
래스
가필
요한
데이
터멤
버들
을제
공�
기초
클래
스성
분의
초기
화–
멤버
이름
이아
닌클
래스
이름
을사
용(9
05쪽
)
�기
초클
래스
메쏘
드에
접근
–클
래스
이름
과클
래스
사용
범위
연산
자사
용(9
07쪽
)1.
Arr
ayD
B::
sum
()2.
std
::va
larr
ay<
double
>::sum
()
�기
초클
래스
객체
에접
근(9
07쪽
) –
위의
3,4
,5�
기초
클래
스프
렌드
에접
근(9
08쪽
) –
위의
3,4
,5�
priva
te 상
속에
서는
파생
클래
스에
서기
초클
래스
로의
명시
적데
이터
형변
환만
가능
함(암
시적
데이
터형
변환
은안
됨)
–public
상속
이라
도명
시적
데이
터형
변환
필요
(909쪽
참고
)
![Page 9: 프로그래밍 (Object Oriented Programming)kowon.dongseo.ac.kr/~dkkang/OOP2008Spring/Chap14-OOP.pdf · Student class Student class 의 의의예 예 이름 – (1) 문자 배열,](https://reader033.vdocuments.mx/reader033/viewer/2022041703/5e43217fb3bc41695b54da91/html5/thumbnails/9.jpg)
컨테
인먼
트와
컨테
인먼
트와
컨테
인먼
트와
컨테
인먼
트와
priva
te
priva
te
priva
te
priva
te 상
속상
속상
속상
속비
교비
교비
교비
교
�Favo
r obje
ct com
positio
n o
ver cla
ss inherita
nce!
-G
oF
1.
컨테
인먼
트가
더사
용하
기쉽
다2.
다중
상속
은다
이아
몬드
구조
가되
는경
우문
제를
일으
킬소
지가
큼1.
두개
이상
의기
초클
래스
들이
같은
조상
을공
유할
경우
, 파
생클
래스
가그
조상
의다
중인
스턴
스를
가짐
2.
두개
이상
의기
초클
래스
들이
같은
이름
을가
진메
쏘드
들을
공유
3.
같은
클래
스종
속객
체들
을여
러개
내포
할수
있음
�priva
te 상
속의
(허접
한)
장점
(컨테
인먼
트에
대한
)1.
pro
tecte
d 멤
버를
사용
할수
있음
2.
가상
멤버
함수
를다
시정
의할
수있
음
�pro
tecte
d 상
속–
priva
te 상
속의
변종
–915쪽
의<표
14.1
>
![Page 10: 프로그래밍 (Object Oriented Programming)kowon.dongseo.ac.kr/~dkkang/OOP2008Spring/Chap14-OOP.pdf · Student class Student class 의 의의예 예 이름 – (1) 문자 배열,](https://reader033.vdocuments.mx/reader033/viewer/2022041703/5e43217fb3bc41695b54da91/html5/thumbnails/10.jpg)
usin
gusin
gusin
gusin
g을 을을을
사용
하여
사용
하여
사용
하여
사용
하여
접근
을접
근을
접근
을접
근을
다시
다시
다시
다시
정의
정의
정의
정의
�priva
te/p
rote
cte
d 상
속을
하고
나서
, 기
초클
래스
들의
특정
메쏘
드들
을public
으로
하려
면?
1.
public
파생
클래
스메
쏘드
를새
로정
의
2.
usin
g 선
언사
용(9
16쪽
)
3.
구식
방법
: public
으로
다시
선언
–원
래의
의도
를퇴
색시
킴
![Page 11: 프로그래밍 (Object Oriented Programming)kowon.dongseo.ac.kr/~dkkang/OOP2008Spring/Chap14-OOP.pdf · Student class Student class 의 의의예 예 이름 – (1) 문자 배열,](https://reader033.vdocuments.mx/reader033/viewer/2022041703/5e43217fb3bc41695b54da91/html5/thumbnails/11.jpg)
다중
다중
다중
다중
상속
상속
상속
상속
�문
제점
1.
서로
다른
두기
초클
래스
들에
서이
름은
같지
만서
로다
른메
쏘드
를상
속하
는문
제2.
같은
조상
클래
스를
가지
는서
로다
른두
기초
클래
스들
에게
서다
중인
스턴
스를
상속
받는
문제
�다
중상
속을
반대
하는
사람
들이
더많
음�
다중
상속
이들
어맞
는경
우–
템플
릿–
Polic
y-based p
rogra
mm
ing
�Ja
va –
클래
스의
다중
상속
안됨
–Ja
va에
서는
어떻
게다
중상
속을
흉내
낼수
있는
가? (
시험
문제
)
�클
래스
구조
-W
ork
er(
조부
모),
Waiter(
부모
), S
inger(
부모
), S
ingin
gW
aiter(
자식
)
![Page 12: 프로그래밍 (Object Oriented Programming)kowon.dongseo.ac.kr/~dkkang/OOP2008Spring/Chap14-OOP.pdf · Student class Student class 의 의의예 예 이름 – (1) 문자 배열,](https://reader033.vdocuments.mx/reader033/viewer/2022041703/5e43217fb3bc41695b54da91/html5/thumbnails/12.jpg)
조부
모조
부모
조부
모조
부모
클래
스의
클래
스의
클래
스의
클래
스의
다중
다중
다중
다중
인스
턴스
인스
턴스
인스
턴스
인스
턴스
(923
(923
(923
(923쪽 쪽쪽쪽
) )))
�두
개의
Work
er
성분–
924쪽
의표
14.4
�모
호성–
(923쪽
)
Sin
gin
gW
aiter
ed;
Work
er*
pw
= &
ed;
–강
제데
이터
형변
환으
로해
결�
다형
성을
해침
�해
결책
은가
상기
초클
래스
cla
ss S
inger
: vi
rtual public
Work
er
{};
cla
ss W
aiter
: vi
rtual public
Work
er
{};
![Page 13: 프로그래밍 (Object Oriented Programming)kowon.dongseo.ac.kr/~dkkang/OOP2008Spring/Chap14-OOP.pdf · Student class Student class 의 의의예 예 이름 – (1) 문자 배열,](https://reader033.vdocuments.mx/reader033/viewer/2022041703/5e43217fb3bc41695b54da91/html5/thumbnails/13.jpg)
가상
가상
가상
가상
기초
기초
기초
기초
클래
스클
래스
클래
스클
래스
(924
(924
(924
(924쪽 쪽쪽쪽
) )))
�하
나의
공통
조상
을공
유하
는여
러개
의기
초클
래스
로부
터공
통조
상의
유일
객체
를상
속받
는방
식
�조
상객
체는
하나
만가
짐
–그
림14.4
(924쪽
) 및
그림
14.5
(925쪽
) 참
조
�이
시점
에서
의문
점들
1.
왜가
상이
냐?
2.
처음
부터
디폴
트로
가상
이면
안되
냐?
3.
가상
기초
클래
스를
쓰려
면뭘
해야
하나
?
![Page 14: 프로그래밍 (Object Oriented Programming)kowon.dongseo.ac.kr/~dkkang/OOP2008Spring/Chap14-OOP.pdf · Student class Student class 의 의의예 예 이름 – (1) 문자 배열,](https://reader033.vdocuments.mx/reader033/viewer/2022041703/5e43217fb3bc41695b54da91/html5/thumbnails/14.jpg)
가상
가상
가상
가상
기초
기초
기초
기초
클래
스클
래스
클래
스클
래스
의문
점의
문점
의문
점의
문점
해결
해결
해결
해결
! !!!
�왜
가상
이라
고하
냐?
–별
의미
없음
.
–새
로운
키워
드를
추가
하기
힘들
다
–일
종의
키워
드오
버로
딩!
�왜
가상
기초
클래
스가
디폴
트가
아닌
가?
–여
러벌
의복
사본
을원
하는
경우
가있
음
–가
상기
초가
디폴
트이
려면
추가
작업
이필
요함
–모
호성
�조
상클
래스
의생
성자
를명
시적
으로
호출
해야
함
�메
쏘드
사용
의모
호성
이존
재함
![Page 15: 프로그래밍 (Object Oriented Programming)kowon.dongseo.ac.kr/~dkkang/OOP2008Spring/Chap14-OOP.pdf · Student class Student class 의 의의예 예 이름 – (1) 문자 배열,](https://reader033.vdocuments.mx/reader033/viewer/2022041703/5e43217fb3bc41695b54da91/html5/thumbnails/15.jpg)
가상
가상
가상
가상
기초
기초
기초
기초
클래
스클
래스
클래
스클
래스
의문
점의
문점
의문
점의
문점
해결
해결
해결
해결
! !!!
�가
상기
초클
래스
를쓰
려면
뭐를
해야
하나
?
–vi
rtual 키
워드
추가
–기
존코
드들
의변
경
![Page 16: 프로그래밍 (Object Oriented Programming)kowon.dongseo.ac.kr/~dkkang/OOP2008Spring/Chap14-OOP.pdf · Student class Student class 의 의의예 예 이름 – (1) 문자 배열,](https://reader033.vdocuments.mx/reader033/viewer/2022041703/5e43217fb3bc41695b54da91/html5/thumbnails/16.jpg)
가상
가상
가상
가상
기초
기초
기초
기초
클래
스의
클래
스의
클래
스의
클래
스의
생성
자생
성자
생성
자생
성자
규칙
규칙
규칙
규칙
Sin
gin
gW
aiter
(const W
ork
er
& w
k,�
) :
Waiter(
wk,
p),
Sin
ger(
wk,
v) {
}
�정
보의
전달
이두
개의
다른
경로
를거
친다
!
�가
상이
아닌
경우
, 각
각의
카피
로가
지만
, 가
상이
라면
문제
가됨
�해
결책
: 명
시적
으로
조상
생성
자도
호출
Sin
gin
gW
aiter
(const W
ork
er
& w
k,�
) :
Work
er(
wk)
, W
aiter(
wk,
p),
Sin
ger(
wk,
v) {
}
![Page 17: 프로그래밍 (Object Oriented Programming)kowon.dongseo.ac.kr/~dkkang/OOP2008Spring/Chap14-OOP.pdf · Student class Student class 의 의의예 예 이름 – (1) 문자 배열,](https://reader033.vdocuments.mx/reader033/viewer/2022041703/5e43217fb3bc41695b54da91/html5/thumbnails/17.jpg)
메쏘
드메
쏘드
메쏘
드메
쏘드
사용
의사
용의
사용
의사
용의
모호
성모
호성
모호
성모
호성
(928
(928
(928
(928쪽 쪽쪽쪽
) )))
�Sin
gin
gW
aiter
new
hire(�
);
�new
hire.S
how
();
// 모
호함
�new
hire.S
inger:
:Show
();
// 해
결
�점
층적
접근
방식
은문
제가
됨(9
29쪽
)–�
priva
te 헬
퍼메
쏘드
를통
한모
듈접
근방
식을
사용
(930쪽
)
![Page 18: 프로그래밍 (Object Oriented Programming)kowon.dongseo.ac.kr/~dkkang/OOP2008Spring/Chap14-OOP.pdf · Student class Student class 의 의의예 예 이름 – (1) 문자 배열,](https://reader033.vdocuments.mx/reader033/viewer/2022041703/5e43217fb3bc41695b54da91/html5/thumbnails/18.jpg)
가상
가상
가상
가상
기초
기초
기초
기초
클래
스와
클래
스와
클래
스와
클래
스와
가상
이가
상이
가상
이가
상이
아닌
아닌
아닌
아닌
기초
기초
기초
기초
클래
클래
클래
클래
스의
스의
스의
스의
혼합
혼합
혼합
혼합
�다
음과
같은
경우
–클
래스
M은
C,D
에대
해서
는클
래스
B의
종속
객체
하나
만내
포
–클
래스
M은
X,Y
에대
해각
각별
개의
클래
스B
의종
속객
체들
을내
포
�모
든가
상경
로에
대해
서는
하나
의클
래스
객체
, 그
렇지
않으
면별
개의
기초
클래
스종
속객
체들
을내
포함
![Page 19: 프로그래밍 (Object Oriented Programming)kowon.dongseo.ac.kr/~dkkang/OOP2008Spring/Chap14-OOP.pdf · Student class Student class 의 의의예 예 이름 – (1) 문자 배열,](https://reader033.vdocuments.mx/reader033/viewer/2022041703/5e43217fb3bc41695b54da91/html5/thumbnails/19.jpg)
가상
가상
가상
가상
기초
기초
기초
기초
클래
스의
클래
스의
클래
스의
클래
스의
비교
비교
비교
비교
우위
우위
우위
우위
(dom
inance)
(dom
inance)
(dom
inance)
(dom
inance)
( (((참고
참고
참고
참고
: 842
: 842
: 842
: 842쪽 쪽쪽쪽
오버
로딩
오버
로딩
오버
로딩
오버
로딩
대 대대대오
버라
이딩
오버
라이
딩오
버라
이딩
오버
라이
딩) )))
�가
상이
아닌
클래
스의
경우
모호
함�
가상
클래
스인
경우
모호
할수
도있
고,
비교
우위
에의
해모
호하
지않
을수
도있
음
�파
생클
래스
의이
름은
조상
클래
스보
다비
교우
위를
가짐
![Page 20: 프로그래밍 (Object Oriented Programming)kowon.dongseo.ac.kr/~dkkang/OOP2008Spring/Chap14-OOP.pdf · Student class Student class 의 의의예 예 이름 – (1) 문자 배열,](https://reader033.vdocuments.mx/reader033/viewer/2022041703/5e43217fb3bc41695b54da91/html5/thumbnails/20.jpg)
가상
가상
가상
가상
기초
기초
기초
기초
클래
스의
클래
스의
클래
스의
클래
스의
비교
비교
비교
비교
우위
우위
우위
우위
(dom
inance)
(dom
inance)
(dom
inance)
(dom
inance)
�클
래스
C가
B에
서파
생되
었으
므로
, 클
래스
C의
q()
정의
가클
래스
B의
q()
정의
보다
비교
우위
를가
짐�
F의
메쏘
드들
은C
::q()
를q()
라고
할수
있음
�C
와E는
서로
상대
에대
해기
초클
래스
가아
니므
로,
om
b()
정의
들은
서로
비교
우위
를가
지지
않음
�F에
서om
b()
를하
면모
호해
짐
�가
상모
호성
은접
근규
칙은
고려
하지
않음
�E
의om
b()
가priva
te 이
라고
해도
여전
히om
b()
의사
용은
모호
함
![Page 21: 프로그래밍 (Object Oriented Programming)kowon.dongseo.ac.kr/~dkkang/OOP2008Spring/Chap14-OOP.pdf · Student class Student class 의 의의예 예 이름 – (1) 문자 배열,](https://reader033.vdocuments.mx/reader033/viewer/2022041703/5e43217fb3bc41695b54da91/html5/thumbnails/21.jpg)
클래
스클
래스
클래
스클
래스
템플
릿템
플릿
템플
릿템
플릿
(942
(942
(942
(942쪽 쪽쪽쪽
) )))
�예
를들
면데
이터
형과
무관
한형
식으
로스
택을
정의
할수
있는
가?
�ty
pedef?
–943쪽
–ty
pedef
unsig
ned long Ite
m;
–단
점1 –
데이
터변
경할
때마
다헤
더파
일수
정
–단
점2 –
프로
그램
당,
한종
류의
스택
만생
성
�C
++의
해결
책–
클래
스템
플릿
![Page 22: 프로그래밍 (Object Oriented Programming)kowon.dongseo.ac.kr/~dkkang/OOP2008Spring/Chap14-OOP.pdf · Student class Student class 의 의의예 예 이름 – (1) 문자 배열,](https://reader033.vdocuments.mx/reader033/viewer/2022041703/5e43217fb3bc41695b54da91/html5/thumbnails/22.jpg)
일단
일단
일단
일단
함수
함수
함수
함수
템플
릿템
플릿
템플
릿템
플릿
복습
복습
복습
복습
(466
(466
(466
(466쪽 쪽쪽쪽
) )))
�템
플릿
은함
수가
아니
며무
조건
인라
인함
수가
되는
것도
아님
�Sw
ap 함
수의
템플
릿예
tem
pla
te <
typenam
eT>
void
Sw
ap (
T &
a,
T &
b)
{
T tem
p =
a;
a =
b;
b =
tem
p;
} �위
의선
언을
했다
고해
도아
직함
수가
생긴
게아
님
![Page 23: 프로그래밍 (Object Oriented Programming)kowon.dongseo.ac.kr/~dkkang/OOP2008Spring/Chap14-OOP.pdf · Student class Student class 의 의의예 예 이름 – (1) 문자 배열,](https://reader033.vdocuments.mx/reader033/viewer/2022041703/5e43217fb3bc41695b54da91/html5/thumbnails/23.jpg)
함수
함수
함수
함수
템플
릿템
플릿
템플
릿템
플릿
복습
복습
복습
복습
계속
계속
계속
계속
�특
수화
(specia
lization)
–템
플릿
은추
상이
다. 따
라서
코드
로실
행하
려면
특수
한예
를이
끌어
내야
한다
.
�암
시적
구체
화, 명
시적
구체
화,
명시
적특
수화
–구
체화
또는
인스
턴스
화(insta
ntiation)
또는
암시
적특
수화
�템
플릿
은함
수가
아니
다.
템플
릿으
로부
터함
수를
만들
어내
야한
다.
�암
시적
구체
화–
마치
있었
던거
처럼
자연
스럽
게요
구함
�명
시적
구체
화–
대놓
고요
청함
. 라
이브
러리
만들
때좋
음
–명
시적
특수
화(e
xplic
it s
pecia
lization)
�템
플릿
에서
지정
한방
법과
는다
른특
수한
예외
를만
들고
싶다
![Page 24: 프로그래밍 (Object Oriented Programming)kowon.dongseo.ac.kr/~dkkang/OOP2008Spring/Chap14-OOP.pdf · Student class Student class 의 의의예 예 이름 – (1) 문자 배열,](https://reader033.vdocuments.mx/reader033/viewer/2022041703/5e43217fb3bc41695b54da91/html5/thumbnails/24.jpg)
함수
함수
함수
함수
템플
릿템
플릿
템플
릿템
플릿
복습
복습
복습
복습
계속
계속
계속
계속
�암
시적
구체
화(im
plic
it insta
ntiation)
–코
드를
만들
라는
명시
적인
선언
이나
실행
이없
다. 다
만이
미만
들었
겠거
니하
고내
부적
으로
돌아
갈뿐
(468쪽
과471
쪽코
드)
–469쪽
의Sw
ap(i,j)
는Sw
ap<in
t>(i,j)
와동
일함
�명
시적
구체
화(e
xplic
it insta
ntiation)
–프
로그
램내
부에
서선
언해
서구
체적
인코
드를
만들
라고
명한
다. (4
79쪽
)–
예: te
mpla
te v
oid
Sw
ap<in
t>(int&
, in
t&
);
�명
시적
특수
화(e
xplic
it s
pecia
lization)
–템
플리
트의
특수
한경
우를
만들
고자
한다
(475쪽
코드
)–
예: te
mpla
te <
> v
oid
Sw
ap<in
t>(int&
, in
t&
);–
예: te
mpla
te <
> v
oid
Sw
ap(int&
, in
t&);
![Page 25: 프로그래밍 (Object Oriented Programming)kowon.dongseo.ac.kr/~dkkang/OOP2008Spring/Chap14-OOP.pdf · Student class Student class 의 의의예 예 이름 – (1) 문자 배열,](https://reader033.vdocuments.mx/reader033/viewer/2022041703/5e43217fb3bc41695b54da91/html5/thumbnails/25.jpg)
함수
함수
함수
함수
템플
릿템
플릿
템플
릿템
플릿
복습
복습
복습
복습
계속
계속
계속
계속
�템
플릿
도오
버로
딩된
다(4
71쪽
)
�따
라서
함수
이름
이하
나주
어지
면(4
74쪽
)–
템플
릿이
아닌
그냥
함수
, 템
플릿
함수
(실은
암시
적특
수화
함수
), 명
시적
특수
화함
수
–그
리고
이것
들의
오버
로딩
버전
들이
존재
할수
있음
�가
장적
합한
버전
을찾
는것
을–
오버
로딩
분석
(ove
rloadin
g r
esolu
tion)이
라고
함
–일
반적
으로
가장
특수
화된
경우
를찾
음
![Page 26: 프로그래밍 (Object Oriented Programming)kowon.dongseo.ac.kr/~dkkang/OOP2008Spring/Chap14-OOP.pdf · Student class Student class 의 의의예 예 이름 – (1) 문자 배열,](https://reader033.vdocuments.mx/reader033/viewer/2022041703/5e43217fb3bc41695b54da91/html5/thumbnails/26.jpg)
클래
스클
래스
클래
스클
래스
템플
릿템
플릿
템플
릿템
플릿
�예
를들
면데
이터
형과
무관
한형
식으
로스
택을
정의
할수
있는
가?
�템
플릿–
매개
변수
화되
는데
이터
형제
공
�예
: Q
ueue에
int를
전달
하여
int의
Queue 생
성,
vala
rray
템플
릿클
래스
�클
래스
템플
릿정
의(9
45쪽
)–
tem
pla
te <
typenam
eT> 로
시작
–데
이터
형�
T
–te
mpla
te <
typenam
eT> b
oolSta
ck<
T>::push(c
onstT&
item
)
�템
플릿
선언
과함
수를
분리
시키
고싶
다면
, exp
ort
![Page 27: 프로그래밍 (Object Oriented Programming)kowon.dongseo.ac.kr/~dkkang/OOP2008Spring/Chap14-OOP.pdf · Student class Student class 의 의의예 예 이름 – (1) 문자 배열,](https://reader033.vdocuments.mx/reader033/viewer/2022041703/5e43217fb3bc41695b54da91/html5/thumbnails/27.jpg)
포인
터들
의포
인터
들의
포인
터들
의포
인터
들의
스택
스택
스택
스택
템플
릿템
플릿
템플
릿템
플릿
�Sta
ck<
char
*> s
t를
적용
하는
경우
, 잘
못된
응용
(951쪽
)–
strin
g p
o; �
char*
po;
�포
인터
만있
지저
장공
간없
음�
실행
시간
에러
–strin
g p
o; �
char
po[4
0];
�pop 메
쏘드
와안
맞음
�배
열이
름에
대입
안되
므로
컴파
일에
러
–strin
g p
o; �
char*
po
= n
ew
char[
40];
�po
주소
는바
뀌지
않고
스택
에들
어감
�로
직에
러
�올
바른
사용
�호
출한
프로
그램
이포
인터
들의
배열
을제
공하
는것
![Page 28: 프로그래밍 (Object Oriented Programming)kowon.dongseo.ac.kr/~dkkang/OOP2008Spring/Chap14-OOP.pdf · Student class Student class 의 의의예 예 이름 – (1) 문자 배열,](https://reader033.vdocuments.mx/reader033/viewer/2022041703/5e43217fb3bc41695b54da91/html5/thumbnails/28.jpg)
포인
터들
의포
인터
들의
포인
터들
의포
인터
들의
스택
스택
스택
스택
템플
릿템
플릿
템플
릿템
플릿
�원
래스
택–
945쪽
�바
뀐스
택(9
53쪽
)–
동적
메모
리할
당으
로포
인터
들의
배열
을할
당함
�제
대로
된사
용예–
956쪽
![Page 29: 프로그래밍 (Object Oriented Programming)kowon.dongseo.ac.kr/~dkkang/OOP2008Spring/Chap14-OOP.pdf · Student class Student class 의 의의예 예 이름 – (1) 문자 배열,](https://reader033.vdocuments.mx/reader033/viewer/2022041703/5e43217fb3bc41695b54da91/html5/thumbnails/29.jpg)
배열
배열
배열
배열
템플
릿템
플릿
템플
릿템
플릿
예제
와예
제와
예제
와예
제와
데이
터데
이터
데이
터데
이터
형이
형이
형이
형이
아닌
아닌
아닌
아닌
전달
전달
전달
전달
인자
인자
인자
인자
�컨
테이
너클
래스–
객체
들을
담기
위한
클래
스–
템플
릿은
다양
한데
이터
형이
매개
변수
로사
용된
다는
점에
서컨
테이
너클
래스
와잘
맞아
떨어
짐
–컨
테이
너클
래스
들을
위해
재활
용하
기위
한코
드를
만들
자는
게템
플릿
을도
입한
동기
�배
열템
플릿
예제–
958쪽
–te
mpla
te <
cla
ss T
, in
tn>
–T는
데이
터형
, n은
숫자
(수식
전달
인자
)
–Arr
ayT
P<double
, 12> e
ggw
eig
hts
;
�수
식전
달인
자double
형은
허용
안됨
![Page 30: 프로그래밍 (Object Oriented Programming)kowon.dongseo.ac.kr/~dkkang/OOP2008Spring/Chap14-OOP.pdf · Student class Student class 의 의의예 예 이름 – (1) 문자 배열,](https://reader033.vdocuments.mx/reader033/viewer/2022041703/5e43217fb3bc41695b54da91/html5/thumbnails/30.jpg)
수식
수식
수식
수식
전달
전달
전달
전달
인자
인자
인자
인자
�정
수형
, 열
거형
, 참
조, 포
인터
허용
됨–
double
& rm
, double
* pm
�double
형은
허용
안됨
–double
m; //
안됨
�템
플릿
코드
는수
식전
달인
자값
을변
경하
거나
그주
소를
얻을
수는
없음
–n++, &
n 등
은허
용안
됨
–템
플릿
을구
체화
할때
, 수
식전
달인
자의
값은
상수
이어
야함
�생
성자
접근
방식–
힙메
모리
�수
식전
달인
자–
스택–
크기
가작
은배
열이
면더
빠름
![Page 31: 프로그래밍 (Object Oriented Programming)kowon.dongseo.ac.kr/~dkkang/OOP2008Spring/Chap14-OOP.pdf · Student class Student class 의 의의예 예 이름 – (1) 문자 배열,](https://reader033.vdocuments.mx/reader033/viewer/2022041703/5e43217fb3bc41695b54da91/html5/thumbnails/31.jpg)
수식
수식
수식
수식
전달
전달
전달
전달
인자
인자
인자
인자
�가
장큰
단점
–각
배열
크기
가자
신만
의템
플릿
을각
각생
성
–Arr
ayT
P<double
, 12> e
ggw
eig
hts
;
–Arr
ayT
P<double
, 13> d
onuts
;
–Sta
ck<
int>
eggs(1
2);
–Sta
ck<
int>
dunke
rs(1
3);
�생
성자
접근
방식
은배
열크
기를
클래
스멤
버로
저장
하므
로더
융통
성이
있음
![Page 32: 프로그래밍 (Object Oriented Programming)kowon.dongseo.ac.kr/~dkkang/OOP2008Spring/Chap14-OOP.pdf · Student class Student class 의 의의예 예 이름 – (1) 문자 배열,](https://reader033.vdocuments.mx/reader033/viewer/2022041703/5e43217fb3bc41695b54da91/html5/thumbnails/32.jpg)
템플
릿의
템플
릿의
템플
릿의
템플
릿의
융통
성과
융통
성과
융통
성과
융통
성과
재귀
적재
귀적
재귀
적재
귀적
사용
사용
사용
사용
�템
플릿
은–
기초
클래
스가
될수
도있
고
–성
분클
래스
가될
수도
있고
–다
른템
플릿
의데
이터
형매
개변
수가
될수
도있
다
�배
열템
플릿
으로
배열
원소
들이
하나
의스
택템
플릿
을이
루는
스택
템플
릿을
만들
고, 다
시배
열템
플릿
으로
스택
템플
릿의
배열
생성
(961쪽
)–
Array
< S
tack<
int>
> a
si; /
/ > >
로>>와
구별
�템
플릿
의재
귀적
사용–
962 쪽
–ArrayT
P< A
rrayT
P<in
t, 5
> , 1
0 >
tw
odee;
–in
ttw
odee[1
0][
5];
와동
일
![Page 33: 프로그래밍 (Object Oriented Programming)kowon.dongseo.ac.kr/~dkkang/OOP2008Spring/Chap14-OOP.pdf · Student class Student class 의 의의예 예 이름 – (1) 문자 배열,](https://reader033.vdocuments.mx/reader033/viewer/2022041703/5e43217fb3bc41695b54da91/html5/thumbnails/33.jpg)
하나
하나
하나
하나
이상
의이
상의
이상
의이
상의
데이
터데
이터
데이
터데
이터
형 형형형매
개매
개매
개매
개변
수변
수변
수변
수, , , , 그
리고
그리
고그
리고
그리
고디
폴트
디폴
트디
폴트
디폴
트데
이터
데이
터데
이터
데이
터형 형형형
매개
매개
매개
매개
변수
변수
변수
변수
�하
나이
상의
데이
터형
매개
변수–
962 쪽
–Pair<strin
g,
int>
�디
폴트
데이
터형
매개
변수
–te
mpla
te<cla
ss T
1,
cla
ss T
2=in
t> c
lass T
opo�
–Topo<double
, double
> m
1;
–Topo<double
> m
2;
// T
opo<double
, in
t> m
2;
–클
래스
템플
릿데
이터
형매
개변
수–
디폴
트값
가능
–함
수템
플릿
데이
터형
매개
변수–
디폴
트값
불가
능
–데
이터
형아
닌매
개변
수–
디폴
트값
가능
![Page 34: 프로그래밍 (Object Oriented Programming)kowon.dongseo.ac.kr/~dkkang/OOP2008Spring/Chap14-OOP.pdf · Student class Student class 의 의의예 예 이름 – (1) 문자 배열,](https://reader033.vdocuments.mx/reader033/viewer/2022041703/5e43217fb3bc41695b54da91/html5/thumbnails/34.jpg)
템플
릿템
플릿
템플
릿템
플릿
특수
화특
수화
특수
화특
수화
�암
시적
구체
화
–사
용하
기를
원하
는데
이터
형을
나타
내는
객체
를선
언(예
: ArrayT
P<in
t,100> s
tuff
;)
–객
체가
요구
될때
까지
암시
적구
체화
를미
룸�
ArrayT
P<double
, 30> *
pt; /
/ 아
직아
님
�pt = n
ew
ArrayT
P<double
, 30>; //
암시
적구
체화
!
�명
시적
구체
화–
클래
스선
언�
tem
pla
te c
lass A
rrayT
P<strin
g, 100>;
�명
시적
특수
화–
다음
슬라
이드
![Page 35: 프로그래밍 (Object Oriented Programming)kowon.dongseo.ac.kr/~dkkang/OOP2008Spring/Chap14-OOP.pdf · Student class Student class 의 의의예 예 이름 – (1) 문자 배열,](https://reader033.vdocuments.mx/reader033/viewer/2022041703/5e43217fb3bc41695b54da91/html5/thumbnails/35.jpg)
명시
적명
시적
명시
적명
시적
특수
화특
수화
특수
화특
수화
�템
플릿
이특
정형
에맞
게구
체화
될때
, 조
금다
르게
행동
하도
록수
정–
tem
pla
te<cla
ss T
> c
lass S
ortedArr
ay
{ �
}
–T::
opera
tor>
() 메
소드
는T가
char*
인경
우다
르게
동작
함–
tem
pla
te<> c
lass S
ortedArr
ay<
char*
> {�
}
�부
분적
인특
수화
–템
플릿
의포
괄성
을일
부제
한하
는것
을말
함
–예�
데이
터형
매개
변수
중어
느하
나에
구체
적데
이터
형제
공
�포
인터
들을
위한
특별
한버
전제
공
![Page 36: 프로그래밍 (Object Oriented Programming)kowon.dongseo.ac.kr/~dkkang/OOP2008Spring/Chap14-OOP.pdf · Student class Student class 의 의의예 예 이름 – (1) 문자 배열,](https://reader033.vdocuments.mx/reader033/viewer/2022041703/5e43217fb3bc41695b54da91/html5/thumbnails/36.jpg)
부분
적인
부분
적인
부분
적인
부분
적인
특수
화특
수화
특수
화특
수화
�데
이터
형매
개변
수중
어느
하나
에구
체적
데이
터형
제공
–포
괄적
인경
우�
tem
pla
te<cla
ss T
1,
cla
ss T
2> c
lass P
air {�
};
–부
분적
인특
수화
�te
mpla
te<cla
ss T
1> c
lass P
air<T1, in
t> {�
};
–명
시적
특수
화�
tem
pla
te<> c
lass P
air<in
t, int>
{�
};
�사
용예
–Pair <
double
, double
> p
1; //
포괄
적인
경우
–Pair <
double
, in
t> p
2; //
부분
적인
특수
화
–Pair <
int, int>
p3; //
명시
적특
수화
![Page 37: 프로그래밍 (Object Oriented Programming)kowon.dongseo.ac.kr/~dkkang/OOP2008Spring/Chap14-OOP.pdf · Student class Student class 의 의의예 예 이름 – (1) 문자 배열,](https://reader033.vdocuments.mx/reader033/viewer/2022041703/5e43217fb3bc41695b54da91/html5/thumbnails/37.jpg)
부분
적인
부분
적인
부분
적인
부분
적인
특수
화특
수화
특수
화특
수화
�포
인터
들을
위한
특별
한버
전제
공
–포
괄적
인버
전�
tem
pla
te<cla
ss T
> c
lass F
eeb
{�
};
–부
분적
인특
수화
�te
mpla
te<cla
ss T
*> c
lass F
eeb
{�
};
�사
용예
–Feeb<char>
fb1;
// 포
괄적
버전
, T는
char
–Feeb<char
*> f
b2;
// 부
분적
특수
화,
T는
char
![Page 38: 프로그래밍 (Object Oriented Programming)kowon.dongseo.ac.kr/~dkkang/OOP2008Spring/Chap14-OOP.pdf · Student class Student class 의 의의예 예 이름 – (1) 문자 배열,](https://reader033.vdocuments.mx/reader033/viewer/2022041703/5e43217fb3bc41695b54da91/html5/thumbnails/38.jpg)
부분
적인
부분
적인
부분
적인
부분
적인
특수
화특
수화
특수
화특
수화
�다
양한
제한
허용
–포
괄적
인버
전
�te
mpla
te<cla
ss T
1,c
lass T
2,
cla
ss T
3> c
lass T
rio {�
};
–T3를
T2로
설정
하는
특수
화
�te
mpla
te<cla
ss T
1,c
lass T
2> c
lass T
rio<T1,T
2,T
2> {�
};
–T3와
T2를
T1*로
설정
하는
특수
화
�te
mpla
te<cla
ss T
1> c
lass T
rio<T1,T
1*,
T1*> {�
};
�사
용예
–Trio<in
t, s
hort,
char *>
t1; //
포괄
적버
전
–Trio<in
t, s
hort> t2; //
Trio<T1,T
2,T
2>
–Trio<char,
char*
,char*
> t3; //
Trio<T1,T
1*,
T1*>
![Page 39: 프로그래밍 (Object Oriented Programming)kowon.dongseo.ac.kr/~dkkang/OOP2008Spring/Chap14-OOP.pdf · Student class Student class 의 의의예 예 이름 – (1) 문자 배열,](https://reader033.vdocuments.mx/reader033/viewer/2022041703/5e43217fb3bc41695b54da91/html5/thumbnails/39.jpg)
멤버
멤버
멤버
멤버
템플
릿템
플릿
템플
릿템
플릿
�템
플릿
은구
조체
, 클
래스
, 템
플릿
클래
스의
멤버
가될
수있
음–
STL에
서요
구됨
�970쪽
예제
–내
포된
템플
릿클
래스
멤버
![Page 40: 프로그래밍 (Object Oriented Programming)kowon.dongseo.ac.kr/~dkkang/OOP2008Spring/Chap14-OOP.pdf · Student class Student class 의 의의예 예 이름 – (1) 문자 배열,](https://reader033.vdocuments.mx/reader033/viewer/2022041703/5e43217fb3bc41695b54da91/html5/thumbnails/40.jpg)
매개
변수
매개
변수
매개
변수
매개
변수
템플
릿템
플릿
템플
릿템
플릿
�템
플릿
의매
개변
수는
–데
이터
형매
개변
수, 데
이터
형이
아닌
매개
변수
, 그
리고
템플
릿매
개변
수를
가질
수있
음
�974쪽
예제
–te
mpla
te <
tem
pla
te<ty
penam
eT> c
lass T
hin
g> c
lass C
rab
{�};
–C
rab<Kin
g> legs; 를
선언
하면
�Thin
g<in
t>가
Kin
g<in
t>로
�Thin
g<double
>이
Kin
g<double
>로
바뀜
–C
rab<Sta
ck>
nebula
; 를
선언
하면
�Thin
g<in
t>가
Sta
ck<
int>
로
�Thin
g<double
>이
Sta
ck<
double
>로
바뀜
![Page 41: 프로그래밍 (Object Oriented Programming)kowon.dongseo.ac.kr/~dkkang/OOP2008Spring/Chap14-OOP.pdf · Student class Student class 의 의의예 예 이름 – (1) 문자 배열,](https://reader033.vdocuments.mx/reader033/viewer/2022041703/5e43217fb3bc41695b54da91/html5/thumbnails/41.jpg)
매개
변수
매개
변수
매개
변수
매개
변수
템플
릿템
플릿
템플
릿템
플릿
�일
반매
개변
수와
혼합
가능
�사
용예
–te
mpla
te <
tem
pla
te<ty
penam
eT> c
lass T
hin
g,
typenam
eU
, ty
penam
eV> c
lass C
rab {�
};
–C
rab<Sta
ck,
int, d
ouble
> n
ebula
;
![Page 42: 프로그래밍 (Object Oriented Programming)kowon.dongseo.ac.kr/~dkkang/OOP2008Spring/Chap14-OOP.pdf · Student class Student class 의 의의예 예 이름 – (1) 문자 배열,](https://reader033.vdocuments.mx/reader033/viewer/2022041703/5e43217fb3bc41695b54da91/html5/thumbnails/42.jpg)
템플
릿템
플릿
템플
릿템
플릿
클래
스와
클래
스와
클래
스와
클래
스와
프렌
드프
렌드
프렌
드프
렌드
함수
함수
함수
함수
�템
플릿
의프
렌드
는세
가지
가있
음
–템
플릿
이아
닌프
렌드
–바
운드
템플
릿프
렌드–
클래
스가
구체
화될
때,
클래
스의
데이
터형
에의
해프
렌드
의데
이터
형이
결정
됨
–언
바운
드템
플릿
프렌
드–
프렌
드의
모든
특수
화
가그
클래
스의
각특
수화
에대
해프
렌드
들임
![Page 43: 프로그래밍 (Object Oriented Programming)kowon.dongseo.ac.kr/~dkkang/OOP2008Spring/Chap14-OOP.pdf · Student class Student class 의 의의예 예 이름 – (1) 문자 배열,](https://reader033.vdocuments.mx/reader033/viewer/2022041703/5e43217fb3bc41695b54da91/html5/thumbnails/43.jpg)
템플
릿이
템플
릿이
템플
릿이
템플
릿이
아닌
아닌
아닌
아닌
프렌
드프
렌드
프렌
드프
렌드
함수
함수
함수
함수
tem
pla
te <
cla
ss T
>
cla
ss H
asFriend
{
frie
nd v
oid
counts
();
// 모
든H
asFriend
구체
화에
대한
프렌
드함
수
} void
counts
() {�
}
�counts
()는
HasFriend<in
t> 클
래스
에대
해서
도프
렌드
이고
, H
asFriend<double
> 클
래스
에대
해서
도프
렌드
임
![Page 44: 프로그래밍 (Object Oriented Programming)kowon.dongseo.ac.kr/~dkkang/OOP2008Spring/Chap14-OOP.pdf · Student class Student class 의 의의예 예 이름 – (1) 문자 배열,](https://reader033.vdocuments.mx/reader033/viewer/2022041703/5e43217fb3bc41695b54da91/html5/thumbnails/44.jpg)
바운
드바
운드
바운
드바
운드
템플
릿템
플릿
템플
릿템
플릿
프렌
드프
렌드
프렌
드프
렌드
함수
함수
함수
함수
tem
pla
te <
cla
ss T
>
cla
ss H
asFriend
{ frie
nd v
oid
report(H
asFriend<T> &
); /
/ 바
운드
템플
릿프
렌드
함수
} void
report(H
asFriend<in
t> &
hf)
{�
}
void
report(H
asFriend<double
> &
hf)
{�
}
�위
의두
report는
HasFriend의
각각
의특
수화
에대
한프
렌드
로,
사용
되는
모든
특수
화에
대해
정의
해주
어야
함
![Page 45: 프로그래밍 (Object Oriented Programming)kowon.dongseo.ac.kr/~dkkang/OOP2008Spring/Chap14-OOP.pdf · Student class Student class 의 의의예 예 이름 – (1) 문자 배열,](https://reader033.vdocuments.mx/reader033/viewer/2022041703/5e43217fb3bc41695b54da91/html5/thumbnails/45.jpg)
템플
릿템
플릿
템플
릿템
플릿
클래
스의
클래
스의
클래
스의
클래
스의
특수
화에
특수
화에
특수
화에
특수
화에
따라
따라
따라
따라
자동
으로
자동
으로
자동
으로
자동
으로
프렌
드프
렌드
프렌
드프
렌드
함수
가함
수가
함수
가함
수가
나오
게나
오게
나오
게나
오게
하는
하는
하는
하는
법 법법법
�프
렌드
함수
들을
함수
템플
릿으
로만
들어
바운
드템
플릿
프렌
드로
설정
하면
클래
스템
플릿
과일
체화
가됨
(981 쪽
)
1.
클래
스정
의앞
에템
플릿
함수
선언
�te
mpla
te <
typenam
eT> v
oid
counts
();
�te
mpla
te <
typenam
eT> v
oid
report(T
&);
2.
템플
릿안
에서
함수
템플
릿들
을프
렌드
로선
언�
frie
nd v
oid
counts
<TT>()
;
�fr
iend v
oid
report<>(H
asFriendT<TT> &
);�
or
frie
nd v
oid
report< H
asFriendT<TT> >
(HasFriendT<TT> &
);
3.
그프
렌드
선언
에대
한함
수템
플릿
정의
제공
4.
사용
예�
counts
<in
t>()
; counts
(double
)();
�re
port(h
fi2);
//
또는
report< H
asFriendT<in
t> >
(hfi2);
![Page 46: 프로그래밍 (Object Oriented Programming)kowon.dongseo.ac.kr/~dkkang/OOP2008Spring/Chap14-OOP.pdf · Student class Student class 의 의의예 예 이름 – (1) 문자 배열,](https://reader033.vdocuments.mx/reader033/viewer/2022041703/5e43217fb3bc41695b54da91/html5/thumbnails/46.jpg)
언바
운드
언바
운드
언바
운드
언바
운드
템플
릿템
플릿
템플
릿템
플릿
프렌
드프
렌드
프렌
드프
렌드
함수
함수
함수
함수
�프
렌드
템플
릿데
이터
형매
개변
수들
이템
플릿
클래
스데
이터
형매
개변
수들
과다
름(9
84쪽
)te
mpla
te <
typenam
eT>
cla
ss M
anyF
riend
{te
mpla
te <
typenam
eC
, ty
penam
eD
> f
riend v
oid
show
2(C
&,
D&
);} �
사용
예–
show
2(h
fi1, hfi2);
�show
2<M
anyF
riend<in
t>,
ManyF
riend<in
t> >
(hfi1,h
fi2);
–show
2(h
fdb, hfi2);
�show
2<M
anyF
riend<double
>,
ManyF
riend<in
t>> (
hfd
b,
hfi2);