SlideShare a Scribd company logo
๋ชจ์–ด ์ดํŽ™ํ‹ฐ๋ธŒ ์”จ์ ์ 
์œ ์šฉํ•˜๊ณ  ์žฌ๋ฏธ์žˆ๋Š”? ํ”„๋กœ๊ทธ๋ž˜๋ฐ ๊ธฐ๋ฒ•๋“ค	

(~ ํ•ญ๋ชฉ 29๊นŒ์ง€)
์ƒ์„ฑ์ž ํ•จ์ˆ˜์™€ ๋น„๋ฉค๋ฒ„ ํ•จ์ˆ˜๋ฅผ ๊ฐ€์ƒ ํ•จ์ˆ˜์ฒ˜๋Ÿผ ๋งŒ๋“œ๋Š” ๋ฐฉ๋ฒ•
-๊ฐ€์ƒ ์ƒ์„ฑ์ž-	

์ž์‹ ์ด ๋ฐ›์€ ์ž…๋ ฅ ๋ฐ์ดํ„ฐ์— ์˜์กดํ•˜์—ฌ	

๋‹ค๋ฅธ ํƒ€์ž…์˜ ๊ฐ์ฒด๋ฅผ ์ƒ์„ฑํ•˜๋Š” ํ•จ์ˆ˜
๊ฐ€์ƒ ๋ณต์‚ฌ ์ƒ์„ฑ์ž๋Š” ํ•ด๋‹น ํด๋ž˜์Šค์˜ ์ง„์งœ ๋ณต์‚ฌ ์ƒ์„ฑ์ž๋ฅผ ํ˜ธ์ถœํ•˜๋Š” ๊ฒƒ์œผ๋กœ ๋
๋น„๋ฉค๋ฒ„ ํ•จ์ˆ˜๋ฅผ ๊ฐ€์ƒ ํ•จ์ˆ˜์ฒ˜๋Ÿผ ๋™์ž‘ํ•˜๊ฒŒ ํ•˜๋Š” ๋ฐฉ๋ฒ•
์›ํ•˜๋Š” ์ผ์„ ํ•˜๋Š” ๊ฐ€์ƒ ํ•จ์ˆ˜๋ฅผ ๋งŒ๋“ค์–ด ๋†“๊ณ ,	

๋น„๊ฐ€์ƒ ํ•จ์ˆ˜์—์„œ ํ˜ธ์ถœ ํ•จ์ˆ˜๊ฐ€ ํ•œ๋ฒˆ๋” ํ˜ธ์ถœ๋˜๋Š” ๋น„์šฉ์€	

์ธ๋ผ์ธ ์„ ์–ธ์œผ๋กœ ์ œ๊ฑฐ
ํด๋ž˜์Šค ์ธ์Šคํ„ด์Šค์˜ ๊ฐœ์ˆ˜๋ฅผ ์˜๋„๋Œ€๋กœ ์ œํ•œํ•˜๋Š” ๋ฐฉ๋ฒ•
๊ฐ์ฒด๋ฅผ ์ „ํ˜€ ์ƒ์„ฑํ•˜์ง€ ์•Š๊ฑฐ๋‚˜ ํ•œ ๊ฐœ๋งŒ ์ƒ์„ฑํ•˜๊ธฐ
ํŠน์ •ํ•œ ํด๋ž˜์Šค์˜ ๊ฐ์ฒด๊ฐ€ ๋งŒ๋“ค์–ด์ง€์ง€ ์•Š๊ฒŒ ํ•˜๋Š”	

๊ฐ€์žฅ ์‰ฌ์šด ๋ฐฉ๋ฒ•์€ ๊ทธ ํด๋ž˜์Šค์˜ ์ƒ์„ฑ์ž๋ฅผ private๋กœ ์„ ์–ธ
์ƒ์„ฑ์ž๊ฐ€ private์—ฌ์„œ ๊ฐ์ฒด ์ƒ์„ฑ์„ ํ• ์ˆ˜์—†์ง€๋งŒ	

friend๋กœ ์ƒ์„ฑ์ž ์ œํ•œ์„ ๋ฒ—์–ด๋‚œ ์ƒํƒœ์—์„œ	

static์œผ๋กœ ํ•˜๋‚˜๋ฅผ ๋งŒ๋“ค๊ณ  ์–ธ์ œ๋“  ๋ถˆ๋Ÿฌ์„œ ์‚ฌ์šฉ
์ „์—ญ๋ณ€์ˆ˜๊ฐ€ ๊ฑฑ์ •๋˜๋ฉด	

ํด๋ž˜์Šค์˜ ์ •์  ๋ฉค๋ฒ„ ๋ณ€์ˆ˜๋กœ ๋‘๊ฑฐ๋‚˜	

๋„ค์ž„์ŠคํŽ˜์ด์Šค์— ๋„ฃ๋Š”๋‹ค.
ํด๋ž˜์Šค์˜ ์ •์  ๊ฐ์ฒด๊ฐ€ ์•„๋‹ˆ๋ผ ํ•จ์ˆ˜์˜ ์ •์  ๊ฐœ์ฒด๋ฉด	

์ด ํ•จ์ˆ˜๊ฐ€ ํ˜ธ์ถœ๋˜์ง€ ์•Š์œผ๋ฉด ๊ฐ์ฒด๋„ ๋งŒ๋“ค์–ด์ง€์ง€ ์•Š๋Š”๋‹ค.	

!
๋˜ ํด๋ž˜์Šค ์ •์  ๊ฐ์ฒด๋ฉด ์ดˆ๊ธฐํ™” ์‹œ์ ์ด ๋ถˆ๋ช…ํ™•ํ•˜๋‹ค.
์‚ฌ์‹ค return ํ•œ์ค„์งœ๋ฆฌ inline๊ณผ ๋งˆ์ฐฌ๊ฐ€์ง€์ง€๋งŒ	

inline์„ ์‚ฌ์šฉํ•˜๋ฉด ์ •์ ๊ฐ์ฒด๊ฐ€ ์ค‘๋ณต์œผ๋กœ ์ƒ๊ธธ์ˆ˜ ์žˆ์œผ๋‹ˆ	

์ •์  ๊ฐ์ฒด๋ฅผ ์„ ์–ธํ•œ ๋น„๋ฉค๋ฒ„ ํ•จ์ˆ˜๋Š” inline์„ ํ˜ธ์ถœํ•˜์ง€ ๋ง์ž
ํ•˜์ง€๋งŒ ์š”์ฆ˜ ์ปดํŒŒ์ผ๋Ÿฌ๋Š” external์—ฐ๊ฒฐ๋กœ	

๋ณ€๊ฒฝํ•œ๋‹ค๊ณ  ํ•จโ€ฆ
๊ฐ์ฒด๋ฅผ ๋ถˆ๋Ÿฌ๋ƒˆ๋‹ค๊ฐ€ ๋“ค์—ฌ๋ณด๋‚ด๋Š” ๊ฒƒ๋„ ์ž์œ ๋กญ๊ฒŒ ํ•˜๊ณ  ์‹ถ๋‹ค!
์ƒ์„ฑ ๊ฐฏ์ˆ˜๋ฅผ ์ œํ•œํ•˜๋ฉด์„œ ๊ฐ์ฒด๋ฅผ ๋ฆฌํ„ด
์ธ์Šคํ„ด์Šค ์นด์šดํŒ…(Object-Counting) ๊ธฐ๋Šฅ์„ ๊ฐ€์ง„ ๊ธฐ๋ณธ ํด๋ž˜์Šค
์ƒ์„ฑ ํšŸ์ˆ˜๋ฅผ ์ œํ•œํ•ด์•ผ ํ•˜๋Š” ํด๋ž˜์Šค๊ฐ€ ๋งŽ์ด ํ•„์š”ํ•˜๋ฉด	

ํ…œํ”Œ๋ฆฟ์„ ๋งŒ๋“ค์–ด์„œ ์›ํ•˜๋Š” ๊ฐœ์ˆ˜๋งŒํผ์˜ ์นด์šดํ„ฐ๋ฅผ ์ž๋™์œผ๋กœ ๋งŒ๋“ค์–ด ๋ณด์ž
ํž™(heap)์—๋งŒ ์ƒ์„ฑ๋˜๊ฑฐ๋‚˜ ํž™์—๋Š” ๋งŒ๋“ค์–ด์ง€์ง€ ์•Š๋Š”	

ํŠน์ˆ˜ํ•œ ํด๋ž˜์Šค๋ฅผ ๋งŒ๋“œ๋Š” ๋ฐฉ๋ฒ•
๊ฐ์ฒด๊ฐ€ ์ž์‚ด(delete this)๋ฅผ ํ•˜๊ฒŒ ๋งŒ๋“ค๋ ค๋ฉด	

๊ผญ ํž™์— ํ• ๋‹น๋˜์–ด์•ผํ•จ	

!
๋ฉ”๋ชจ๋ฆฌ ๋ˆ„์ˆ˜๋ฅผ ์ฐจ๋‹จํ•˜๊ณ  ์‹ถ์œผ๋ฉด	

ํž™์— ํ• ๋‹นํ•˜์ง€ ์•Š๋Š”๊ฒƒ๋„ ๋ฐฉ๋ฒ•โ€ฆ	

!
์ด๊ฑธ ์ปจํŠธ๋กค ํ• ๋ ค๋ฉด?
๊ฐ์ฒด๊ฐ€ ํž™์—๋งŒ ์ƒ์„ฑ๋˜๊ฒŒ ํ•˜๊ธฐ
ํž™์œผ๋กœ ํ•œ์ •์ง“๋Š” ๋ฐฉ๋ฒ•์€ new์ด์™ธ์˜ ๋ฐฉ๋ฒ•์œผ๋กœ ๊ฐ์ฒด ์ƒ์„ฑ์„ ๊ธˆ์ง€์‹œํ‚ด	

!
์ƒ์„ฑ์ž์™€ ์†Œ๋ฉธ์ž๋กœ private๋กœ ํ•˜์žโ€ฆ	

๋Š” ๋„ˆ๋ฌด ์ •๋„๋ฅผ ๋„˜๋Š”๋‹ค.	

!
์ƒ์„ฑ์ž๋ฅผ public์œผ๋กœ ์†Œ๋ฉธ์ž๋งŒ private๋กœ ํ•˜๊ณ 	

์ง„์งœ ์†Œ๋ช…์ž๋ฅผ ํ˜ธ์ถœํ•˜๋Š” ์œ ์‚ฌ ์†Œ๋ฉธ์ž๋ฅผ ๋งŒ๋“ค์ž.
๋ฉ”๋ชจ๋ฆฌ ๊ตฌ์กฐ๋ฅผ ์ƒ๊ฐํ•ด์„œ ์ด๋Ÿฐ์‹์œผ๋กœ ํŒ๋ณ„ํ•  ์ˆ˜ ์žˆ์ง€ ์•Š์„๊นŒ?
์ •์  ๊ฐ์ฒด๋ฅผ ๊ตฌ๋ถ„ ๋ชปํ•จ
๊ทธ๋ฆฌ๊ณ  ์ €๋ฒˆ ์ˆ˜์—…๋‚ด์šฉ ์ฒ˜๋Ÿผ ์ € char๊ฐ€ ๋๋ถ€๋ถ„์ด ์•„๋‹Œ	

๋‹ค๋ฅธ ์ž๋ฆฌ๋ฅผ ๊ฐ€๋ฆฌํ‚ค๋Š” ์ผ์€ ์—†์„๊นŒโ€ฆ
newํ• ๋•Œ๋งˆ๋‹ค ๋ฆฌ์ŠคํŠธ์— ๊ธฐ๋ก์„ ํ•˜๊ณ 	

๊ธฐ๋กํ•œ ๋‚ด์šฉ์œผ๋กœ ๊ฒ€์ƒ‰์„ ํ•œ๋‹ค.
๊ฐ์ฒด๊ฐ€ ํž™์— ์ƒ์„ฑ๋˜์ง€ ์•Š๊ฒŒ ํ•˜๊ธฐ
new๋ฅผ ๋ง‰์•„๋ฒ„๋ฆฌ์ž
์Šค๋งˆํŠธ ํฌ์ธํ„ฐ(Smart pointer)
์Šค๋งˆํŠธ ํฌ์ธํ„ฐ๋ฅผ ์“ฐ๋Š” ์ด์œ 
- ์ƒ์„ฑ(construction)๊ณผ ์†Œ๋ฉธ(destruction) ์ž‘์—…์„ ์กฐ์ ˆ	

๋ฆฌ์†Œ์Šค ๋ˆ„์ˆ˜ ๋ง‰๊ณ  ์ดˆ๊ธฐํ™”๋„ ํ•ด์ค€๋‹ค.	

!
- ๋ณต์‚ฌ(copy)์™€ ๋Œ€์ž…(assignment) ๋™์ž‘์„ ์กฐ์ ˆ	

๊ฐ์ฒด, ํฌ์ธํ„ฐ ๋ณต์‚ฌํ•˜๋˜์ง€ ๋Œ€์ž…ํ•˜๋˜์ง€ ๊ฒฐ์ • ๊ฐ€๋Šฅ	

!
- ์—ญ์ฐธ์กฐ(dereferencing) ๋™์ž‘์„ ์กฐ์ ˆ	

๊ฐ€์ ธ์˜ค๋Š” ๋ฐฉ๋ฒ•๋„ ๊ฒฐ์ • ๊ฐ€๋Šฅ
์Šค๋งˆํŠธ ํฌ์ธํ„ฐ์˜ ์ƒ์„ฑ, ๋Œ€์ž…, ์†Œ๋ฉธ
์ƒ์„ฑ์€ ๊ฐ€๋ฆฌํ‚ฌ ๊ฐ์ฒด๋ฅผ ํ•˜๋‚˜ ์ค€๋น„ํ•˜๊ณ ,	

์Šค๋งˆํŠธ ํฌ์ธํ„ฐ์˜ ๋‚ด๋ถ€์— ์žˆ๋Š” ๋ฒ™์–ด๋ฆฌ ํฌ์ธํ„ฐ๋ฅผ	

๊ทธ ๊ฐ์ฒด์˜ ์ฃผ์†Œ๋กœ ์„ธํŒ…ํ•˜๋Š”๊ฒƒ์œผ๋กœ ๋	

!
!
๊ทธ๋Ÿฐ๋ฐ ๊ทธ๋ƒฅ ๋ฒ™์–ด๋ฆฌ ํฌ์ธํ„ฐ์— ํฌ์ธํ„ฐ ๋ณต์‚ฌํ•˜๋ฉด	

์‚ญ์ œ๋ ๋•Œ ๋‘๋ฒˆ์‚ญ์ œ๋˜๋Š” ๋ฌธ์ œ ์žˆ์„์ˆ˜ ์žˆ์Œ	

๊ทธ๋Ÿฌ๋ฉด ๊ฐ’ ๋ณต์‚ฌ? -> ์„ฑ๋Šฅ ์ €ํ•˜	

!
-> ๋ณต์‚ฌ ๋Œ€์ž…์„ ๋ชปํ•˜๊ฒŒ ํ•˜๋ฉด ๋ฌธ์ œ ํ•ด๊ฒฐ	

!
->ํ•˜์ง€๋งŒ auto_ptr์€ ๋ณต์‚ฌ, ๋Œ€์ž…๋ ๋•Œ ์†Œ์œ  ๊ด€๊ณ„๋ฅผ ์˜ฎ๊น€	

!
-> ๊ทธ๋Ÿฌ๋ฏ€๋กœ ๊ฐ’ ์˜ฎ๊ธฐ๋Š” ๊ฒƒ์„ ์ฃผ์˜
์—ญ์ฐธ์กฐ(Dereferencing) ์—ฐ์‚ฐ์ž ๊ตฌํ˜„ํ•˜๊ธฐ
operator*, operator-> ์Šค๋งˆํŠธ ํฌ์ธํ„ฐ๊ฐ€ ๊ฐ€๋ฆฌํ‚ค๋Š” ๊ฐ์ฒด๋ฅผ ๋ฐ˜ํ™˜ํ•˜๋Š” ํ•จ์ˆ˜	

์ฐธ์กฐ์ž๋ฅผ ๋ฐ˜ํ™˜ํ•ด์•ผ์ง€ ๊ฐ์ฒด๋ฅผ ๋ฐ˜ํ™˜ํ•˜๋ฉด ์Šฌ๋ผ์ด์Šค ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒ	

null์ผ๋•Œ๋Š” ์–ด์ฉ”์ˆ˜ ์—†์Œ ์˜ˆ์™ธ์ฒ˜๋ฆฌ ํ•ด์•ผํ•จ
์Šค๋งˆํŠธ ํฌ์ธํ„ฐ๊ฐ€ null์ธ์ง€ ์ ๊ฒ€ํ•˜๊ธฐ
isNull๊ฐ™์€ ๋ฉค๋ฒ„ ํ•จ์ˆ˜๋ฅผ ์ถ”๊ฐ€ํ•˜๋Š”๊ฑด ๋ณ„๋กœ ์Šค๋งˆํŠธ ํ•ด๋ณด์ด์ง€ ์•Š์Œ	

ํƒ€์ž…๋ณ€ํ™˜ ์—ฐ์‚ฐ์ž๋ฅผ void*๋กœ ๋ฐ”๊พธ๋ฉด ์Šค๋งˆํŠธ ํฌ์ธํ„ฐ๊ฐ€ ๋„์ด๋ฉด	

0์„ ๋ฐ˜ํ™˜ํ•˜๊ณ  ์•„๋‹ˆ๋ฉด 0์ด ์•„๋‹Œ ๊ฐ’์„ ๋ฐ˜ํ™˜ํ•œ๋‹ค.
ํ•˜์ง€๋งŒ ์™„์ „์น˜ ์•Š์Œโ€ฆ
์Šค๋งˆํŠธ ํฌ์ธํ„ฐ๋ฅผ ๋ฒ™์–ด๋ฆฌ ํฌ์ธํ„ฐ๋กœ ๋ณ€ํ™˜ํ•˜๊ธฐ
์•”์‹œ์ ์œผ๋กœ ํƒ€์ž…์„ ๋ณ€ํ™˜ํ•˜๋Š” ์—ฐ์‚ฐ์ž๋ฅผ ์ œ๊ณตํ•˜๋ฉด ๋˜์ง€๋งŒ	

์ง์ ‘ ๋ฒ™์–ด๋ฆฌ ํฌ์ธํ„ฐ๋ฅผ ์กฐ์ž‘ํ•˜์˜€๋‹ค๊ฐ„ ์ฐธ์กฐ ์นด์šดํŒ…์— ํ•„์š”ํ•œ ์ •๋ณด๊ฐ€	

์กฐ์ •๋˜์ง€ ์•Š์•„์„œ ๋‘๋ฒˆ์‚ญ์ œ๋˜๊ฑฐ๋‚˜ ์—ฌ๋Ÿฌ ๋ฌธ์ œ๋ฅผ ์ผ์œผํ‚จ๋‹ค.	

-> ๊ฐ€๋Šฅํ•˜๋ฉด ํ•˜์ง€ ๋ง์ž.
์Šค๋งˆํŠธ ํฌ์ธํ„ฐ์™€ ์ƒ์† ๊ธฐ๋ฐ˜์˜ ํƒ€์ž…๋ณ€ํ™˜
์ƒ์† ๊ด€๊ณ„์— ์žˆ์–ด๋„ ์Šค๋งˆํŠธ ํฌ์ธํ„ฐ๋Š”	

๋ณ€ํ™˜์„ ๋ชปํ•ด์ค€๋‹ค.	

!
์•”์‹œ์  ํƒ€์ž… ์—ฐ์‚ฐ์ž๋ฅผ ๋งŒ๋“ค๊นŒ?	

-> ํ…œํ”Œ๋ฆฟ์˜ ์ฒ ํ•™๊ณผ ๋‹ค๋ฅด๋‹ค	

-> ํด๋ž˜์Šค ๊ณ„ํ†ต ๊ตฌ์กฐ๊ฐ€ ๊นŠ์œผ๋ฉด	

๋” ๋งŽ์€ ๋ณ€ํ™˜ ์—ฐ์‚ฐ์ž ์ถ”๊ฐ€ํ•ด์•ผํ•จ	

!
์•”์‹œ์  ๋ณ€ํ™˜ ์—ฐ์‚ฐ์ž๋ฅผ ๋งŒ๋“œ๋Š”	

ํ…œํ”Œ๋ฆฟ์„ ๋งŒ๋“ค์ž -> ๊ฐ€๋…์„ฑ์ดโ€ฆ
์Šค๋งˆํŠธ ํฌ์ธํ„ฐ
์Šค๋งˆํŠธ ํฌ์ธํ„ฐ ์“ธ๋ ค๋ฉด ์‹ ๊ฒฝ์จ์•ผ ํ•˜๋Š” ๊ฒฝ์šฐ๊ฐ€ ๋งŽ์Œ	

๋„ ์ ๊ฒ€์ด๋‚˜ ๋ฒ™์–ด๋ฆฌ ํฌ์ธํ„ฐ๋กœ์˜ ๋ณ€ํ™˜,	

์ƒ์† ๊ธฐ๋ฐ˜์˜ ๋ณ€ํ™˜, ์ƒ์ˆ˜ ๊ฐ์ฒด์— ๋Œ€ํ•œ ํฌ์ธํ„ฐ ์ง€์›๋“ฑ์˜ ์ƒํ™ฉ์—์„œ๋Š”	

์Šค๋งˆํŠธ ํฌ์ธํ„ฐ ์‚ฌ์šฉ์„ ์ œํ•œํ•ด์•ผํ•จ	

!
๊ตฌํ˜„๋„ ํž˜๋“ค๊ณ  ์ดํ•ดํ•˜๊ธฐ๋„ ํž˜๋“ค๊ณ  ์œ ์ง€๋ณด์ˆ˜๋„ ํž˜๋“ค๋‹ค	

๋””๋ฒ„๊น…๋„ ํ›จ์”ฌ ํž˜๋“ค์–ด ์ง„๋‹ค.	

!
ํ•˜์ง€๋งŒ ์ฐธ์กฐ ์นด์šดํŒ… ์ฝ”๋“œ์—์„œ๋Š” ์Šค๋งˆํŠธ ํฌ์ธํ„ฐ๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด	

์ƒ๋‹นํžˆ ๋‹จ์ˆœํ•ด ์ง„๋‹ค๋˜์ง€ ๋‹ค๋ฅธ ๋ฐฉ๋ฒ•์œผ๋ก  ๊ตฌํ˜„ํ•˜๊ธฐ ํž˜๋“  ๊ธฐ๋Šฅ์„	

๊ตฌ์‚ฌํ•˜๋Š”๋ฐ ํšจ๊ณผ์ ์ด๋‹ค.
์ฐธ์กฐ ์นด์šดํŒ…(Reference Counting)
์—ฌ๋Ÿฌ ๊ฐœ์˜ ๊ฐ์ฒด๋“ค์ด ๋˜‘๊ฐ™์€ ๊ฐ’์„ ๊ฐ€์กŒ์œผ๋ฉด,	

๊ทธ ๊ฐ์ฒด๋“ค๋กœ ํ•˜์—ฌ๊ธˆ ๊ทธ ๊ฐ’์„ ๋‚˜ํƒ€๋‚ด๋Š” ํ•˜๋‚˜์˜ ๋ฐ์ดํ„ฐ๋ฅผ ๊ณต์œ ํ•˜๊ฒŒ ํ•ด์„œ	

๋ฐ์ดํ„ฐ์˜ ์–‘์„ ์ ˆ์•ฝํ•˜๋Š” ๊ธฐ๋ฒ•	

!
-ํž™ ๊ฐ์ฒด๋ฅผ ๋‘˜๋Ÿฌ์‹ผ ๋‚ด๋ถ€ ์ •๋ณด๋ฅผ ์œ ์ง€ํ•˜๋Š” ์ž‘์—…์„ ๋‹จ์ˆœํ•˜๊ฒŒ ํ•˜์ž	

-๋˜‘๊ฐ™์€ ๊ฐ’์„ ๊ฐ€์ง€๊ณ  ์žˆ๋Š” ๊ฐ์ฒด๋“ค์ด ๊ทธ ์ค‘๋ณต์„ ๋†”๋‘๋Š” ๊ฒƒ์€ ๋‚ญ๋น„
ํ•˜์ง€๋งŒ ์†Œ๋ฉธ์€?
์ฐธ์กฐ ํšŸ์ˆ˜๋ฅผ ๊ธฐ๋กํ•˜๊ณ  ์žˆ๋‹ค๊ฐ€	

0์ด๋˜๋ฉด ์‚ญ์ œํ•ด์„œ ๋ฉ”๋ชจ๋ฆฌ ๋ˆ„์ˆ˜๋ฅผ ๋ง‰์ž	

!
์‚ฌ์šฉ ์นด์šดํŠธ(use count)๋ผ๊ณ  ๋ถ€๋ฅด๊ธฐ๋„ ํ•จ
๋Œ€์ž…์‹œ์—๋Š” ์ฐธ์กฐ ์นด์šดํŠธ๋ฅผ ๋Š˜๋ฆฌ๊ณ 	

๋™์ผํ•œ ๊ฒƒ์„ ๋ฐ˜ํ™˜ํ•˜๊ณ 	

์นด์šดํŠธ๊ฐ€ 0์ด๋ฉด ์‚ญ์ œ
๊ธฐ๋ก์‹œ์  ๋ณต์‚ฌ(Copy-on-Write)
๊ณต์œ ์ค‘์ด๋˜ ๊ฒƒ์„ ํ•˜๋‚˜๊ฐ€ ์ˆ˜์ •์ด ๋˜์–ด์•ผ ํ•  ๋•Œ์—๋Š”	

๋‹ค๋ฅธ ๊ณต์œ ๋˜์–ด์žˆ๋Š” ์• ํ•œํ…Œ ์˜ํ–ฅ์ด ๊ฐ€์ง€ ์•Šํ† ๋ก	

์‚ฌ๋ณธ์„ ๋งŒ๋“ค์–ด์„œ ๋ฐ˜ํ™˜์„ ํ•œ๋‹ค.
ํฌ์ธํ„ฐ, ์ฐธ์กฐ์ž, ๊ทธ๋ฆฌ๊ณ  ๊ธฐ๋ก์‹œ์  ๋ณต์‚ฌ
? ? ?
์–‘์ชฝ๋‹ค ๊ฐ’์ด ๋ณ€๊ฒฝ๋จโ€ฆ	

์ด๋ ‡๊ฒŒ ๋˜๋„๋ก ๊ตฌํ˜„๋œ ๊ฒฝ์šฐ๊ฐ€ ๋งŽ์Œ
๊ณต์œ  ๊ฐ€๋Šฅ์„ฑ(shareability)์„ ๋‚˜ํƒ€๋‚ด๋Š” ํ”Œ๋ž˜๊ทธ๋ฅผ ๋„ฃ์–ด	

๊ฐ์ฒด๊ฐ€ ๊ณต์œ ๊ฐ€๋Šฅ ์—ฌ๋ถ€๋ฅผ ๋‚˜ํƒ€๋‚ด๊ณ 	

operator[]๊ฐ€ ๋ถˆ๋ฆฌ๋ฉด false๋กœ ๋ฐ”๊พธ์–ด์„œ ๊ณต์œ  ๋ถˆ๊ฐ€๋Šฅ์œผ๋กœ ๋งŒ๋“ ๋‹ค.
์ฐธ์กฐ ์นด์šดํŒ… ๊ธฐ๋Šฅ์„ ๊ฐ€์ง„ ๊ธฐ๋ณธ ํด๋ž˜์Šค
๊ธฐ์กด์˜ ํด๋ž˜์Šค์— ์ƒ์†์„ ๋ฐ›๋Š” ๊ฒƒ์œผ๋กœ ์ฐธ์กฐ ์นด์šดํŠธ ๊ธฐ๋Šฅ์„ ๋„ฃ์ž.
-๊ธฐ๋Šฅ-	

์ฐธ์กฐ ์ถ”๊ฐ€(์นด์šดํŠธ ์ฆ๊ฐ€)	

์ฐธ์กฐ ์ œ๊ฑฐ(์นด์šดํŠธ ๊ฐ์†Œ)	

์ฐธ์กฐ ๊ฐ€๋Šฅ์„ฑ ํ”Œ๋ž˜๊ทธ๋กœ ํ”Œ๋ž˜๊ทธ ์กฐํšŒ๋‚˜ ๋น„ํ™œ์„ฑํ™”
์ฐธ์กฐ ์นด์šดํŠธ ์กฐ์ž‘์„ ์ž๋™ํ™”ํ•˜๊ธฐ
์•ž์˜ RCObject์—๋Š” ์ฐธ์กฐ ์นด์šดํŠธ๋ฅผ ์ €์žฅํ•  ์ˆ˜ ์žˆ๋Š” ๊ณต๊ฐ„๊ณผ	

์ฐธ์กฐ์นด์šดํŠธ๋ฅผ ์กฐ์ž‘ํ•  ์ˆ˜ ์žˆ๋Š” ๋ฉค๋ฒ„ ํ•จ์ˆ˜๊ฐ€ ์žˆ๋Š”๋ฐ	

์ด ํ•จ์ˆ˜๋Š” ์ง์ ‘ ํ˜ธ์ถœํ•ด ์ฃผ์–ด์•ผ ํ•˜๋‹ˆ ์ด๋Ÿฐ ํ˜ธ์ถœ ์ฝ”๋“œ๋„	

์žฌ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•œ ํด๋ž˜์Šค์—๊ฒŒ ๋ชฐ์•„์ค˜๋ณด์ž.
๊ฐ’์ด ๋‹ค๋ฅด๋ฉด ๊ธฐ์กด์˜ ๊ฐ’์„ ์ €์žฅํ•˜๊ณ 	

๊ณต์œ ๋‚˜ ์‚ฌ๋ณธ์„ ๋งŒ๋“ค๊ณ 	

์ฐธ์กฐ ์ œ๊ฑฐ
์†Œ๋ฉธ์ž๋Š” ๊ทธ๋ƒฅ ์ฐธ์กฐ ์ œ๊ฑฐ
์ฐธ์กฐ ์นด์šดํŒ… ๊ฒฐ๋ก 
์ข‹์•„ ๋ณด์ด์ง€๋งŒ ๊ฒฐ๊ตญ ์–ด๋Š ์ƒํ™ฉ์— ์ ํ•ฉํ•˜๋ƒ๊ฐ€ ์ค‘์š”	

๋งค๋ฒˆ ์นด์šดํŠธ๋ฅผ ์ œ์–ดํ•˜๊ณ  ๋ณด๊ด€ํ•˜๋Š” ๋น„์šฉ๋„ ์ถ”๊ฐ€๋กœ ๋“ค๊ณ 	

์ฝ”๋“œ๋„ ๋ณต์žกํ•˜๊ฒŒ ๋œ๋‹ค. -> ์œ ์ง€๋ณด์ˆ˜ ํ—ฌ	

์ž๊ธฐ ์ฐธ์กฐํ˜•(self-referential) ํ˜น์€	

์›ํ˜• ์˜์กดํ˜• (circular dependency)๊ตฌ์กฐ (ํŠธ๋ฆฌ ๋“ฑ)์—์„œ๋Š”	

์ ์šฉ์ด ํž˜๋“ค๋‹ค.	

!
ํ•˜์ง€๋งŒ	

์ƒ๋Œ€์ ์œผ๋กœ ๋งŽ์€ ๊ฐ์ฒด๋“ค์ด ์ƒ๋Œ€์ ์œผ๋กœ ์ ์€ ๊ฐ’์„ ๊ณต์œ ํ•  ๋•Œ,	

์–ด๋–ค ๊ฐ์ฒด๊ฐ’์„ ์ƒ์„ฑํ•˜๊ฑฐ๋‚˜ ์†Œ๋ฉธ์‹œํ‚ค๋Š”๋ฐ ๋งŽ์€ ๋น„์šฉ์ด ๋“ค๊ฑฐ๋‚˜	

๋ฉ”๋ชจ๋ฆฌ ์†Œ๋ชจ๊ฐ€ ํด๋•Œ ํฐ ํšจ๊ณผ๋ฅผ ๋ฐœํœ˜ํ•œ๋‹ค.	

๊ทธ๋ฆฌ๊ณ  ์ƒ์„ฑ ์†Œ๋ฉธ์„ ๋œ ์‹ ๊ฒฝ์จ๋„ ๋˜์–ด์„œ ํŽธํ•˜๋‹ค.	

!
๊ทธ๋ฆฌ๊ณ  ์ด ์กฐ๊ฑด์— ๋งŒ์กฑํ•˜๋Š”์ง€ ํŒ๋‹จํ•˜๋Š” ๋ฐฉ๋ฒ•์€ ํ”„๋กœํŒŒ์ผ๋ง

More Related Content

What's hot

More effective c++ แ„’แ…กแ†ผแ„†แ…ฉแ†จ30แ„‡แ…ฎแ„แ…ฅ
More effective c++ แ„’แ…กแ†ผแ„†แ…ฉแ†จ30แ„‡แ…ฎแ„แ…ฅMore effective c++ แ„’แ…กแ†ผแ„†แ…ฉแ†จ30แ„‡แ…ฎแ„แ…ฅ
More effective c++ แ„’แ…กแ†ผแ„†แ…ฉแ†จ30แ„‡แ…ฎแ„แ…ฅ
Dong Chan Shin
ย 
Ec++ 3,4 summary
Ec++ 3,4 summaryEc++ 3,4 summary
Ec++ 3,4 summarySehyeon Nam
ย 
M5 6 1
M5 6 1M5 6 1
M5 6 1nexthw
ย 
5 6 1
5 6 15 6 1
5 6 1nexthw
ย 
effective c++ chapter 3~4 ์ •๋ฆฌ
effective c++ chapter 3~4 ์ •๋ฆฌeffective c++ chapter 3~4 ์ •๋ฆฌ
effective c++ chapter 3~4 ์ •๋ฆฌ
Injae Lee
ย 
์ดํŽ™ํ‹ฐ๋ธŒ C++ ๊ณต๋ถ€
์ดํŽ™ํ‹ฐ๋ธŒ C++ ๊ณต๋ถ€์ดํŽ™ํ‹ฐ๋ธŒ C++ ๊ณต๋ถ€
์ดํŽ™ํ‹ฐ๋ธŒ C++ ๊ณต๋ถ€quxn6
ย 
Effective c++ ์ •๋ฆฌ 1~2
Effective c++ ์ •๋ฆฌ 1~2Effective c++ ์ •๋ฆฌ 1~2
Effective c++ ์ •๋ฆฌ 1~2
Injae Lee
ย 
More effective c++ chapter4 แ„‹แ…ตแ„’แ…ฎ แ„’แ…กแ†ผแ„†แ…ฉแ†จ 29แ„แ…กแ„Œแ…ต
More effective c++ chapter4 แ„‹แ…ตแ„’แ…ฎ แ„’แ…กแ†ผแ„†แ…ฉแ†จ 29แ„แ…กแ„Œแ…ตMore effective c++ chapter4 แ„‹แ…ตแ„’แ…ฎ แ„’แ…กแ†ผแ„†แ…ฉแ†จ 29แ„แ…กแ„Œแ…ต
More effective c++ chapter4 แ„‹แ…ตแ„’แ…ฎ แ„’แ…กแ†ผแ„†แ…ฉแ†จ 29แ„แ…กแ„Œแ…ต
Dong Chan Shin
ย 
Effective c++ 1,2
Effective c++ 1,2Effective c++ 1,2
Effective c++ 1,2
์„ธ๋นˆ ์ •
ย 
์ดํŽ™ํ‹ฐ๋ธŒ C++ ์Šคํ„ฐ๋””
์ดํŽ™ํ‹ฐ๋ธŒ C++ ์Šคํ„ฐ๋””์ดํŽ™ํ‹ฐ๋ธŒ C++ ์Šคํ„ฐ๋””
์ดํŽ™ํ‹ฐ๋ธŒ C++ ์Šคํ„ฐ๋””
quxn6
ย 
Effective C++ Chaper 1
Effective C++ Chaper 1Effective C++ Chaper 1
Effective C++ Chaper 1
์—ฐ์šฐ ๊น€
ย 
python ํด๋ž˜์Šค ์ƒ์„ฑ์ž
python ํด๋ž˜์Šค ์ƒ์„ฑ์žpython ํด๋ž˜์Šค ์ƒ์„ฑ์ž
python ํด๋ž˜์Šค ์ƒ์„ฑ์ž
Gyu Hyeon Kim
ย 
๋ชจ์–ด์ดํŽ™ํ‹ฐ๋ธŒ C++ 5,6
๋ชจ์–ด์ดํŽ™ํ‹ฐ๋ธŒ C++ 5,6๋ชจ์–ด์ดํŽ™ํ‹ฐ๋ธŒ C++ 5,6
๋ชจ์–ด์ดํŽ™ํ‹ฐ๋ธŒ C++ 5,6
quxn6
ย 
แ„‡แ…ตแ„€แ…ขแ„‡แ…กแ†ฏแ„Œแ…กแ„…แ…ณแ†ฏ แ„‹แ…ฑแ„’แ…กแ†ซ Javascript แ„‹แ…กแ†ฏแ„‹แ…กแ„€แ…กแ„€แ…ต #5.1
แ„‡แ…ตแ„€แ…ขแ„‡แ…กแ†ฏแ„Œแ…กแ„…แ…ณแ†ฏ แ„‹แ…ฑแ„’แ…กแ†ซ Javascript แ„‹แ…กแ†ฏแ„‹แ…กแ„€แ…กแ„€แ…ต #5.1แ„‡แ…ตแ„€แ…ขแ„‡แ…กแ†ฏแ„Œแ…กแ„…แ…ณแ†ฏ แ„‹แ…ฑแ„’แ…กแ†ซ Javascript แ„‹แ…กแ†ฏแ„‹แ…กแ„€แ…กแ„€แ…ต #5.1
แ„‡แ…ตแ„€แ…ขแ„‡แ…กแ†ฏแ„Œแ…กแ„…แ…ณแ†ฏ แ„‹แ…ฑแ„’แ…กแ†ซ Javascript แ„‹แ…กแ†ฏแ„‹แ…กแ„€แ…กแ„€แ…ต #5.1
๋ฏผํƒœ ๊น€
ย 

What's hot (20)

More effective c++ แ„’แ…กแ†ผแ„†แ…ฉแ†จ30แ„‡แ…ฎแ„แ…ฅ
More effective c++ แ„’แ…กแ†ผแ„†แ…ฉแ†จ30แ„‡แ…ฎแ„แ…ฅMore effective c++ แ„’แ…กแ†ผแ„†แ…ฉแ†จ30แ„‡แ…ฎแ„แ…ฅ
More effective c++ แ„’แ…กแ†ผแ„†แ…ฉแ†จ30แ„‡แ…ฎแ„แ…ฅ
ย 
More effective c++ 3
More effective c++ 3More effective c++ 3
More effective c++ 3
ย 
Ec++ 3,4 summary
Ec++ 3,4 summaryEc++ 3,4 summary
Ec++ 3,4 summary
ย 
M5 6 1
M5 6 1M5 6 1
M5 6 1
ย 
Effective c++ 2
Effective c++ 2Effective c++ 2
Effective c++ 2
ย 
5 6 1
5 6 15 6 1
5 6 1
ย 
Effective c++ 4
Effective c++ 4Effective c++ 4
Effective c++ 4
ย 
effective c++ chapter 3~4 ์ •๋ฆฌ
effective c++ chapter 3~4 ์ •๋ฆฌeffective c++ chapter 3~4 ์ •๋ฆฌ
effective c++ chapter 3~4 ์ •๋ฆฌ
ย 
์ดํŽ™ํ‹ฐ๋ธŒ C++ ๊ณต๋ถ€
์ดํŽ™ํ‹ฐ๋ธŒ C++ ๊ณต๋ถ€์ดํŽ™ํ‹ฐ๋ธŒ C++ ๊ณต๋ถ€
์ดํŽ™ํ‹ฐ๋ธŒ C++ ๊ณต๋ถ€
ย 
Effective c++ ์ •๋ฆฌ 1~2
Effective c++ ์ •๋ฆฌ 1~2Effective c++ ์ •๋ฆฌ 1~2
Effective c++ ์ •๋ฆฌ 1~2
ย 
More effective c++ chapter4 แ„‹แ…ตแ„’แ…ฎ แ„’แ…กแ†ผแ„†แ…ฉแ†จ 29แ„แ…กแ„Œแ…ต
More effective c++ chapter4 แ„‹แ…ตแ„’แ…ฎ แ„’แ…กแ†ผแ„†แ…ฉแ†จ 29แ„แ…กแ„Œแ…ตMore effective c++ chapter4 แ„‹แ…ตแ„’แ…ฎ แ„’แ…กแ†ผแ„†แ…ฉแ†จ 29แ„แ…กแ„Œแ…ต
More effective c++ chapter4 แ„‹แ…ตแ„’แ…ฎ แ„’แ…กแ†ผแ„†แ…ฉแ†จ 29แ„แ…กแ„Œแ…ต
ย 
Effective c++ 1
Effective c++ 1Effective c++ 1
Effective c++ 1
ย 
Effective c++ 1,2
Effective c++ 1,2Effective c++ 1,2
Effective c++ 1,2
ย 
์ดํŽ™ํ‹ฐ๋ธŒ C++ ์Šคํ„ฐ๋””
์ดํŽ™ํ‹ฐ๋ธŒ C++ ์Šคํ„ฐ๋””์ดํŽ™ํ‹ฐ๋ธŒ C++ ์Šคํ„ฐ๋””
์ดํŽ™ํ‹ฐ๋ธŒ C++ ์Šคํ„ฐ๋””
ย 
More effective c++ 1
More effective c++ 1More effective c++ 1
More effective c++ 1
ย 
MEC++ 5
MEC++ 5MEC++ 5
MEC++ 5
ย 
Effective C++ Chaper 1
Effective C++ Chaper 1Effective C++ Chaper 1
Effective C++ Chaper 1
ย 
python ํด๋ž˜์Šค ์ƒ์„ฑ์ž
python ํด๋ž˜์Šค ์ƒ์„ฑ์žpython ํด๋ž˜์Šค ์ƒ์„ฑ์ž
python ํด๋ž˜์Šค ์ƒ์„ฑ์ž
ย 
๋ชจ์–ด์ดํŽ™ํ‹ฐ๋ธŒ C++ 5,6
๋ชจ์–ด์ดํŽ™ํ‹ฐ๋ธŒ C++ 5,6๋ชจ์–ด์ดํŽ™ํ‹ฐ๋ธŒ C++ 5,6
๋ชจ์–ด์ดํŽ™ํ‹ฐ๋ธŒ C++ 5,6
ย 
แ„‡แ…ตแ„€แ…ขแ„‡แ…กแ†ฏแ„Œแ…กแ„…แ…ณแ†ฏ แ„‹แ…ฑแ„’แ…กแ†ซ Javascript แ„‹แ…กแ†ฏแ„‹แ…กแ„€แ…กแ„€แ…ต #5.1
แ„‡แ…ตแ„€แ…ขแ„‡แ…กแ†ฏแ„Œแ…กแ„…แ…ณแ†ฏ แ„‹แ…ฑแ„’แ…กแ†ซ Javascript แ„‹แ…กแ†ฏแ„‹แ…กแ„€แ…กแ„€แ…ต #5.1แ„‡แ…ตแ„€แ…ขแ„‡แ…กแ†ฏแ„Œแ…กแ„…แ…ณแ†ฏ แ„‹แ…ฑแ„’แ…กแ†ซ Javascript แ„‹แ…กแ†ฏแ„‹แ…กแ„€แ…กแ„€แ…ต #5.1
แ„‡แ…ตแ„€แ…ขแ„‡แ…กแ†ฏแ„Œแ…กแ„…แ…ณแ†ฏ แ„‹แ…ฑแ„’แ…กแ†ซ Javascript แ„‹แ…กแ†ฏแ„‹แ…กแ„€แ…กแ„€แ…ต #5.1
ย 

Similar to M5 1 1

Effective c++ 1~8์žฅ
Effective c++ 1~8์žฅ Effective c++ 1~8์žฅ
Effective c++ 1~8์žฅ
Shin heemin
ย 
๋ชจ์–ด ์ดํŽ™ํ‹ฐ๋ธŒ c++ 5์žฅ ์Šคํ„ฐ๋””
๋ชจ์–ด ์ดํŽ™ํ‹ฐ๋ธŒ c++ 5์žฅ ์Šคํ„ฐ๋””๋ชจ์–ด ์ดํŽ™ํ‹ฐ๋ธŒ c++ 5์žฅ ์Šคํ„ฐ๋””
๋ชจ์–ด ์ดํŽ™ํ‹ฐ๋ธŒ c++ 5์žฅ ์Šคํ„ฐ๋””
quxn6
ย 
3 4 1
3 4 13 4 1
3 4 1nexthw
ย 
Effective cpp
Effective cppEffective cpp
Effective cpp
TonyCms
ย 
Effective C++ Chapter 3 Summary
Effective C++ Chapter 3 SummaryEffective C++ Chapter 3 Summary
Effective C++ Chapter 3 Summary
SeungYeonChoi10
ย 
แ„‹แ…ฌแ„€แ…จแ„‹แ…ฅ แ„‰แ…ณแ„แ…ฅแ„ƒแ…ต 3/5 function and object
แ„‹แ…ฌแ„€แ…จแ„‹แ…ฅ แ„‰แ…ณแ„แ…ฅแ„ƒแ…ต 3/5   function and objectแ„‹แ…ฌแ„€แ…จแ„‹แ…ฅ แ„‰แ…ณแ„แ…ฅแ„ƒแ…ต 3/5   function and object
แ„‹แ…ฌแ„€แ…จแ„‹แ…ฅ แ„‰แ…ณแ„แ…ฅแ„ƒแ…ต 3/5 function and object
๋ฏผํƒœ ๊น€
ย 
แ„€แ…ฆแ„‹แ…ตแ†ทแ„‘แ…ณแ„…แ…ฉแ„€แ…ณแ„…แ…ขแ„†แ…ตแ†ผแ„‹แ…ตแ†ธแ„†แ…ฎแ†ซ 7
แ„€แ…ฆแ„‹แ…ตแ†ทแ„‘แ…ณแ„…แ…ฉแ„€แ…ณแ„…แ…ขแ„†แ…ตแ†ผแ„‹แ…ตแ†ธแ„†แ…ฎแ†ซ 7แ„€แ…ฆแ„‹แ…ตแ†ทแ„‘แ…ณแ„…แ…ฉแ„€แ…ณแ„…แ…ขแ„†แ…ตแ†ผแ„‹แ…ตแ†ธแ„†แ…ฎแ†ซ 7
แ„€แ…ฆแ„‹แ…ตแ†ทแ„‘แ…ณแ„…แ…ฉแ„€แ…ณแ„…แ…ขแ„†แ…ตแ†ผแ„‹แ…ตแ†ธแ„†แ…ฎแ†ซ 7
Yeonah Ki
ย 
More effective c++ chapter3 4
More effective c++ chapter3 4More effective c++ chapter3 4
More effective c++ chapter3 4Dong Chan Shin
ย 
1 2 1
1 2 11 2 1
1 2 1nexthw
ย 
Effective c++ chapter5 6_ 131039 ์‹ ๋™์ฐฌ
Effective c++ chapter5 6_ 131039 ์‹ ๋™์ฐฌEffective c++ chapter5 6_ 131039 ์‹ ๋™์ฐฌ
Effective c++ chapter5 6_ 131039 ์‹ ๋™์ฐฌDong Chan Shin
ย 
๋ชจ์–ด ์ดํŽ™ํ‹ฐ๋ธŒ c++ 1,2์žฅ ์Šคํ„ฐ๋””
๋ชจ์–ด ์ดํŽ™ํ‹ฐ๋ธŒ c++ 1,2์žฅ ์Šคํ„ฐ๋””๋ชจ์–ด ์ดํŽ™ํ‹ฐ๋ธŒ c++ 1,2์žฅ ์Šคํ„ฐ๋””
๋ชจ์–ด ์ดํŽ™ํ‹ฐ๋ธŒ c++ 1,2์žฅ ์Šคํ„ฐ๋””
quxn6
ย 
Effective c++ chapter 1,2 ์š”์•ฝ
Effective c++ chapter 1,2 ์š”์•ฝEffective c++ chapter 1,2 ์š”์•ฝ
Effective c++ chapter 1,2 ์š”์•ฝ
Nam Hyeonuk
ย 
๋ชจ์–ด์ดํŽ™ํ‹ฐ๋ธŒ C++ 3,4์žฅ ์˜ˆ์™ธ, ํšจ์œจ ์Šคํ„ฐ๋””
๋ชจ์–ด์ดํŽ™ํ‹ฐ๋ธŒ C++ 3,4์žฅ ์˜ˆ์™ธ, ํšจ์œจ ์Šคํ„ฐ๋””๋ชจ์–ด์ดํŽ™ํ‹ฐ๋ธŒ C++ 3,4์žฅ ์˜ˆ์™ธ, ํšจ์œจ ์Šคํ„ฐ๋””
๋ชจ์–ด์ดํŽ™ํ‹ฐ๋ธŒ C++ 3,4์žฅ ์˜ˆ์™ธ, ํšจ์œจ ์Šคํ„ฐ๋””
quxn6
ย 
Effective c++chapter3
Effective c++chapter3Effective c++chapter3
Effective c++chapter3
์„ฑ์—ฐ ๊น€
ย 
M3 4 1
M3 4 1M3 4 1
M3 4 1nexthw
ย 
๋””์ž์ธํŒจํ„ด 1~13
๋””์ž์ธํŒจํ„ด 1~13๋””์ž์ธํŒจํ„ด 1~13
๋””์ž์ธํŒจํ„ด 1~13
Shin heemin
ย 
Head first๋””์ž์ธํŒจํ„ด 1~13_ํฌ๋ฏผ_ํ˜ธ์ค€
Head first๋””์ž์ธํŒจํ„ด 1~13_ํฌ๋ฏผ_ํ˜ธ์ค€Head first๋””์ž์ธํŒจํ„ด 1~13_ํฌ๋ฏผ_ํ˜ธ์ค€
Head first๋””์ž์ธํŒจํ„ด 1~13_ํฌ๋ฏผ_ํ˜ธ์ค€
HoJun Sung
ย 
Effective c++chapter1 and2
Effective c++chapter1 and2Effective c++chapter1 and2
Effective c++chapter1 and2
์„ฑ์—ฐ ๊น€
ย 
You don't know JS / this / chapter 1-2
You don't know JS / this / chapter 1-2You don't know JS / this / chapter 1-2
You don't know JS / this / chapter 1-2
Kiwoong Kwon
ย 

Similar to M5 1 1 (20)

Effective c++ 1~8์žฅ
Effective c++ 1~8์žฅ Effective c++ 1~8์žฅ
Effective c++ 1~8์žฅ
ย 
๋ชจ์–ด ์ดํŽ™ํ‹ฐ๋ธŒ c++ 5์žฅ ์Šคํ„ฐ๋””
๋ชจ์–ด ์ดํŽ™ํ‹ฐ๋ธŒ c++ 5์žฅ ์Šคํ„ฐ๋””๋ชจ์–ด ์ดํŽ™ํ‹ฐ๋ธŒ c++ 5์žฅ ์Šคํ„ฐ๋””
๋ชจ์–ด ์ดํŽ™ํ‹ฐ๋ธŒ c++ 5์žฅ ์Šคํ„ฐ๋””
ย 
3 4 1
3 4 13 4 1
3 4 1
ย 
Effective cpp
Effective cppEffective cpp
Effective cpp
ย 
Effective C++ Chapter 3 Summary
Effective C++ Chapter 3 SummaryEffective C++ Chapter 3 Summary
Effective C++ Chapter 3 Summary
ย 
แ„‹แ…ฌแ„€แ…จแ„‹แ…ฅ แ„‰แ…ณแ„แ…ฅแ„ƒแ…ต 3/5 function and object
แ„‹แ…ฌแ„€แ…จแ„‹แ…ฅ แ„‰แ…ณแ„แ…ฅแ„ƒแ…ต 3/5   function and objectแ„‹แ…ฌแ„€แ…จแ„‹แ…ฅ แ„‰แ…ณแ„แ…ฅแ„ƒแ…ต 3/5   function and object
แ„‹แ…ฌแ„€แ…จแ„‹แ…ฅ แ„‰แ…ณแ„แ…ฅแ„ƒแ…ต 3/5 function and object
ย 
แ„€แ…ฆแ„‹แ…ตแ†ทแ„‘แ…ณแ„…แ…ฉแ„€แ…ณแ„…แ…ขแ„†แ…ตแ†ผแ„‹แ…ตแ†ธแ„†แ…ฎแ†ซ 7
แ„€แ…ฆแ„‹แ…ตแ†ทแ„‘แ…ณแ„…แ…ฉแ„€แ…ณแ„…แ…ขแ„†แ…ตแ†ผแ„‹แ…ตแ†ธแ„†แ…ฎแ†ซ 7แ„€แ…ฆแ„‹แ…ตแ†ทแ„‘แ…ณแ„…แ…ฉแ„€แ…ณแ„…แ…ขแ„†แ…ตแ†ผแ„‹แ…ตแ†ธแ„†แ…ฎแ†ซ 7
แ„€แ…ฆแ„‹แ…ตแ†ทแ„‘แ…ณแ„…แ…ฉแ„€แ…ณแ„…แ…ขแ„†แ…ตแ†ผแ„‹แ…ตแ†ธแ„†แ…ฎแ†ซ 7
ย 
Effective c++ Chapter1,2
Effective c++ Chapter1,2Effective c++ Chapter1,2
Effective c++ Chapter1,2
ย 
More effective c++ chapter3 4
More effective c++ chapter3 4More effective c++ chapter3 4
More effective c++ chapter3 4
ย 
1 2 1
1 2 11 2 1
1 2 1
ย 
Effective c++ chapter5 6_ 131039 ์‹ ๋™์ฐฌ
Effective c++ chapter5 6_ 131039 ์‹ ๋™์ฐฌEffective c++ chapter5 6_ 131039 ์‹ ๋™์ฐฌ
Effective c++ chapter5 6_ 131039 ์‹ ๋™์ฐฌ
ย 
๋ชจ์–ด ์ดํŽ™ํ‹ฐ๋ธŒ c++ 1,2์žฅ ์Šคํ„ฐ๋””
๋ชจ์–ด ์ดํŽ™ํ‹ฐ๋ธŒ c++ 1,2์žฅ ์Šคํ„ฐ๋””๋ชจ์–ด ์ดํŽ™ํ‹ฐ๋ธŒ c++ 1,2์žฅ ์Šคํ„ฐ๋””
๋ชจ์–ด ์ดํŽ™ํ‹ฐ๋ธŒ c++ 1,2์žฅ ์Šคํ„ฐ๋””
ย 
Effective c++ chapter 1,2 ์š”์•ฝ
Effective c++ chapter 1,2 ์š”์•ฝEffective c++ chapter 1,2 ์š”์•ฝ
Effective c++ chapter 1,2 ์š”์•ฝ
ย 
๋ชจ์–ด์ดํŽ™ํ‹ฐ๋ธŒ C++ 3,4์žฅ ์˜ˆ์™ธ, ํšจ์œจ ์Šคํ„ฐ๋””
๋ชจ์–ด์ดํŽ™ํ‹ฐ๋ธŒ C++ 3,4์žฅ ์˜ˆ์™ธ, ํšจ์œจ ์Šคํ„ฐ๋””๋ชจ์–ด์ดํŽ™ํ‹ฐ๋ธŒ C++ 3,4์žฅ ์˜ˆ์™ธ, ํšจ์œจ ์Šคํ„ฐ๋””
๋ชจ์–ด์ดํŽ™ํ‹ฐ๋ธŒ C++ 3,4์žฅ ์˜ˆ์™ธ, ํšจ์œจ ์Šคํ„ฐ๋””
ย 
Effective c++chapter3
Effective c++chapter3Effective c++chapter3
Effective c++chapter3
ย 
M3 4 1
M3 4 1M3 4 1
M3 4 1
ย 
๋””์ž์ธํŒจํ„ด 1~13
๋””์ž์ธํŒจํ„ด 1~13๋””์ž์ธํŒจํ„ด 1~13
๋””์ž์ธํŒจํ„ด 1~13
ย 
Head first๋””์ž์ธํŒจํ„ด 1~13_ํฌ๋ฏผ_ํ˜ธ์ค€
Head first๋””์ž์ธํŒจํ„ด 1~13_ํฌ๋ฏผ_ํ˜ธ์ค€Head first๋””์ž์ธํŒจํ„ด 1~13_ํฌ๋ฏผ_ํ˜ธ์ค€
Head first๋””์ž์ธํŒจํ„ด 1~13_ํฌ๋ฏผ_ํ˜ธ์ค€
ย 
Effective c++chapter1 and2
Effective c++chapter1 and2Effective c++chapter1 and2
Effective c++chapter1 and2
ย 
You don't know JS / this / chapter 1-2
You don't know JS / this / chapter 1-2You don't know JS / this / chapter 1-2
You don't know JS / this / chapter 1-2
ย 

M5 1 1

  • 1. ๋ชจ์–ด ์ดํŽ™ํ‹ฐ๋ธŒ ์”จ์ ์  ์œ ์šฉํ•˜๊ณ  ์žฌ๋ฏธ์žˆ๋Š”? ํ”„๋กœ๊ทธ๋ž˜๋ฐ ๊ธฐ๋ฒ•๋“ค (~ ํ•ญ๋ชฉ 29๊นŒ์ง€)
  • 2. ์ƒ์„ฑ์ž ํ•จ์ˆ˜์™€ ๋น„๋ฉค๋ฒ„ ํ•จ์ˆ˜๋ฅผ ๊ฐ€์ƒ ํ•จ์ˆ˜์ฒ˜๋Ÿผ ๋งŒ๋“œ๋Š” ๋ฐฉ๋ฒ• -๊ฐ€์ƒ ์ƒ์„ฑ์ž- ์ž์‹ ์ด ๋ฐ›์€ ์ž…๋ ฅ ๋ฐ์ดํ„ฐ์— ์˜์กดํ•˜์—ฌ ๋‹ค๋ฅธ ํƒ€์ž…์˜ ๊ฐ์ฒด๋ฅผ ์ƒ์„ฑํ•˜๋Š” ํ•จ์ˆ˜ ๊ฐ€์ƒ ๋ณต์‚ฌ ์ƒ์„ฑ์ž๋Š” ํ•ด๋‹น ํด๋ž˜์Šค์˜ ์ง„์งœ ๋ณต์‚ฌ ์ƒ์„ฑ์ž๋ฅผ ํ˜ธ์ถœํ•˜๋Š” ๊ฒƒ์œผ๋กœ ๋
  • 3. ๋น„๋ฉค๋ฒ„ ํ•จ์ˆ˜๋ฅผ ๊ฐ€์ƒ ํ•จ์ˆ˜์ฒ˜๋Ÿผ ๋™์ž‘ํ•˜๊ฒŒ ํ•˜๋Š” ๋ฐฉ๋ฒ• ์›ํ•˜๋Š” ์ผ์„ ํ•˜๋Š” ๊ฐ€์ƒ ํ•จ์ˆ˜๋ฅผ ๋งŒ๋“ค์–ด ๋†“๊ณ , ๋น„๊ฐ€์ƒ ํ•จ์ˆ˜์—์„œ ํ˜ธ์ถœ ํ•จ์ˆ˜๊ฐ€ ํ•œ๋ฒˆ๋” ํ˜ธ์ถœ๋˜๋Š” ๋น„์šฉ์€ ์ธ๋ผ์ธ ์„ ์–ธ์œผ๋กœ ์ œ๊ฑฐ
  • 4. ํด๋ž˜์Šค ์ธ์Šคํ„ด์Šค์˜ ๊ฐœ์ˆ˜๋ฅผ ์˜๋„๋Œ€๋กœ ์ œํ•œํ•˜๋Š” ๋ฐฉ๋ฒ• ๊ฐ์ฒด๋ฅผ ์ „ํ˜€ ์ƒ์„ฑํ•˜์ง€ ์•Š๊ฑฐ๋‚˜ ํ•œ ๊ฐœ๋งŒ ์ƒ์„ฑํ•˜๊ธฐ ํŠน์ •ํ•œ ํด๋ž˜์Šค์˜ ๊ฐ์ฒด๊ฐ€ ๋งŒ๋“ค์–ด์ง€์ง€ ์•Š๊ฒŒ ํ•˜๋Š” ๊ฐ€์žฅ ์‰ฌ์šด ๋ฐฉ๋ฒ•์€ ๊ทธ ํด๋ž˜์Šค์˜ ์ƒ์„ฑ์ž๋ฅผ private๋กœ ์„ ์–ธ
  • 5. ์ƒ์„ฑ์ž๊ฐ€ private์—ฌ์„œ ๊ฐ์ฒด ์ƒ์„ฑ์„ ํ• ์ˆ˜์—†์ง€๋งŒ friend๋กœ ์ƒ์„ฑ์ž ์ œํ•œ์„ ๋ฒ—์–ด๋‚œ ์ƒํƒœ์—์„œ static์œผ๋กœ ํ•˜๋‚˜๋ฅผ ๋งŒ๋“ค๊ณ  ์–ธ์ œ๋“  ๋ถˆ๋Ÿฌ์„œ ์‚ฌ์šฉ ์ „์—ญ๋ณ€์ˆ˜๊ฐ€ ๊ฑฑ์ •๋˜๋ฉด ํด๋ž˜์Šค์˜ ์ •์  ๋ฉค๋ฒ„ ๋ณ€์ˆ˜๋กœ ๋‘๊ฑฐ๋‚˜ ๋„ค์ž„์ŠคํŽ˜์ด์Šค์— ๋„ฃ๋Š”๋‹ค.
  • 6. ํด๋ž˜์Šค์˜ ์ •์  ๊ฐ์ฒด๊ฐ€ ์•„๋‹ˆ๋ผ ํ•จ์ˆ˜์˜ ์ •์  ๊ฐœ์ฒด๋ฉด ์ด ํ•จ์ˆ˜๊ฐ€ ํ˜ธ์ถœ๋˜์ง€ ์•Š์œผ๋ฉด ๊ฐ์ฒด๋„ ๋งŒ๋“ค์–ด์ง€์ง€ ์•Š๋Š”๋‹ค. ! ๋˜ ํด๋ž˜์Šค ์ •์  ๊ฐ์ฒด๋ฉด ์ดˆ๊ธฐํ™” ์‹œ์ ์ด ๋ถˆ๋ช…ํ™•ํ•˜๋‹ค.
  • 7. ์‚ฌ์‹ค return ํ•œ์ค„์งœ๋ฆฌ inline๊ณผ ๋งˆ์ฐฌ๊ฐ€์ง€์ง€๋งŒ inline์„ ์‚ฌ์šฉํ•˜๋ฉด ์ •์ ๊ฐ์ฒด๊ฐ€ ์ค‘๋ณต์œผ๋กœ ์ƒ๊ธธ์ˆ˜ ์žˆ์œผ๋‹ˆ ์ •์  ๊ฐ์ฒด๋ฅผ ์„ ์–ธํ•œ ๋น„๋ฉค๋ฒ„ ํ•จ์ˆ˜๋Š” inline์„ ํ˜ธ์ถœํ•˜์ง€ ๋ง์ž ํ•˜์ง€๋งŒ ์š”์ฆ˜ ์ปดํŒŒ์ผ๋Ÿฌ๋Š” external์—ฐ๊ฒฐ๋กœ ๋ณ€๊ฒฝํ•œ๋‹ค๊ณ  ํ•จโ€ฆ
  • 8. ๊ฐ์ฒด๋ฅผ ๋ถˆ๋Ÿฌ๋ƒˆ๋‹ค๊ฐ€ ๋“ค์—ฌ๋ณด๋‚ด๋Š” ๊ฒƒ๋„ ์ž์œ ๋กญ๊ฒŒ ํ•˜๊ณ  ์‹ถ๋‹ค! ์ƒ์„ฑ ๊ฐฏ์ˆ˜๋ฅผ ์ œํ•œํ•˜๋ฉด์„œ ๊ฐ์ฒด๋ฅผ ๋ฆฌํ„ด
  • 9. ์ธ์Šคํ„ด์Šค ์นด์šดํŒ…(Object-Counting) ๊ธฐ๋Šฅ์„ ๊ฐ€์ง„ ๊ธฐ๋ณธ ํด๋ž˜์Šค ์ƒ์„ฑ ํšŸ์ˆ˜๋ฅผ ์ œํ•œํ•ด์•ผ ํ•˜๋Š” ํด๋ž˜์Šค๊ฐ€ ๋งŽ์ด ํ•„์š”ํ•˜๋ฉด ํ…œํ”Œ๋ฆฟ์„ ๋งŒ๋“ค์–ด์„œ ์›ํ•˜๋Š” ๊ฐœ์ˆ˜๋งŒํผ์˜ ์นด์šดํ„ฐ๋ฅผ ์ž๋™์œผ๋กœ ๋งŒ๋“ค์–ด ๋ณด์ž
  • 10. ํž™(heap)์—๋งŒ ์ƒ์„ฑ๋˜๊ฑฐ๋‚˜ ํž™์—๋Š” ๋งŒ๋“ค์–ด์ง€์ง€ ์•Š๋Š” ํŠน์ˆ˜ํ•œ ํด๋ž˜์Šค๋ฅผ ๋งŒ๋“œ๋Š” ๋ฐฉ๋ฒ• ๊ฐ์ฒด๊ฐ€ ์ž์‚ด(delete this)๋ฅผ ํ•˜๊ฒŒ ๋งŒ๋“ค๋ ค๋ฉด ๊ผญ ํž™์— ํ• ๋‹น๋˜์–ด์•ผํ•จ ! ๋ฉ”๋ชจ๋ฆฌ ๋ˆ„์ˆ˜๋ฅผ ์ฐจ๋‹จํ•˜๊ณ  ์‹ถ์œผ๋ฉด ํž™์— ํ• ๋‹นํ•˜์ง€ ์•Š๋Š”๊ฒƒ๋„ ๋ฐฉ๋ฒ•โ€ฆ ! ์ด๊ฑธ ์ปจํŠธ๋กค ํ• ๋ ค๋ฉด?
  • 11. ๊ฐ์ฒด๊ฐ€ ํž™์—๋งŒ ์ƒ์„ฑ๋˜๊ฒŒ ํ•˜๊ธฐ ํž™์œผ๋กœ ํ•œ์ •์ง“๋Š” ๋ฐฉ๋ฒ•์€ new์ด์™ธ์˜ ๋ฐฉ๋ฒ•์œผ๋กœ ๊ฐ์ฒด ์ƒ์„ฑ์„ ๊ธˆ์ง€์‹œํ‚ด ! ์ƒ์„ฑ์ž์™€ ์†Œ๋ฉธ์ž๋กœ private๋กœ ํ•˜์žโ€ฆ ๋Š” ๋„ˆ๋ฌด ์ •๋„๋ฅผ ๋„˜๋Š”๋‹ค. ! ์ƒ์„ฑ์ž๋ฅผ public์œผ๋กœ ์†Œ๋ฉธ์ž๋งŒ private๋กœ ํ•˜๊ณ  ์ง„์งœ ์†Œ๋ช…์ž๋ฅผ ํ˜ธ์ถœํ•˜๋Š” ์œ ์‚ฌ ์†Œ๋ฉธ์ž๋ฅผ ๋งŒ๋“ค์ž.
  • 12. ๋ฉ”๋ชจ๋ฆฌ ๊ตฌ์กฐ๋ฅผ ์ƒ๊ฐํ•ด์„œ ์ด๋Ÿฐ์‹์œผ๋กœ ํŒ๋ณ„ํ•  ์ˆ˜ ์žˆ์ง€ ์•Š์„๊นŒ?
  • 13. ์ •์  ๊ฐ์ฒด๋ฅผ ๊ตฌ๋ถ„ ๋ชปํ•จ ๊ทธ๋ฆฌ๊ณ  ์ €๋ฒˆ ์ˆ˜์—…๋‚ด์šฉ ์ฒ˜๋Ÿผ ์ € char๊ฐ€ ๋๋ถ€๋ถ„์ด ์•„๋‹Œ ๋‹ค๋ฅธ ์ž๋ฆฌ๋ฅผ ๊ฐ€๋ฆฌํ‚ค๋Š” ์ผ์€ ์—†์„๊นŒโ€ฆ
  • 14. newํ• ๋•Œ๋งˆ๋‹ค ๋ฆฌ์ŠคํŠธ์— ๊ธฐ๋ก์„ ํ•˜๊ณ  ๊ธฐ๋กํ•œ ๋‚ด์šฉ์œผ๋กœ ๊ฒ€์ƒ‰์„ ํ•œ๋‹ค.
  • 15. ๊ฐ์ฒด๊ฐ€ ํž™์— ์ƒ์„ฑ๋˜์ง€ ์•Š๊ฒŒ ํ•˜๊ธฐ new๋ฅผ ๋ง‰์•„๋ฒ„๋ฆฌ์ž
  • 16. ์Šค๋งˆํŠธ ํฌ์ธํ„ฐ(Smart pointer) ์Šค๋งˆํŠธ ํฌ์ธํ„ฐ๋ฅผ ์“ฐ๋Š” ์ด์œ  - ์ƒ์„ฑ(construction)๊ณผ ์†Œ๋ฉธ(destruction) ์ž‘์—…์„ ์กฐ์ ˆ ๋ฆฌ์†Œ์Šค ๋ˆ„์ˆ˜ ๋ง‰๊ณ  ์ดˆ๊ธฐํ™”๋„ ํ•ด์ค€๋‹ค. ! - ๋ณต์‚ฌ(copy)์™€ ๋Œ€์ž…(assignment) ๋™์ž‘์„ ์กฐ์ ˆ ๊ฐ์ฒด, ํฌ์ธํ„ฐ ๋ณต์‚ฌํ•˜๋˜์ง€ ๋Œ€์ž…ํ•˜๋˜์ง€ ๊ฒฐ์ • ๊ฐ€๋Šฅ ! - ์—ญ์ฐธ์กฐ(dereferencing) ๋™์ž‘์„ ์กฐ์ ˆ ๊ฐ€์ ธ์˜ค๋Š” ๋ฐฉ๋ฒ•๋„ ๊ฒฐ์ • ๊ฐ€๋Šฅ
  • 17. ์Šค๋งˆํŠธ ํฌ์ธํ„ฐ์˜ ์ƒ์„ฑ, ๋Œ€์ž…, ์†Œ๋ฉธ ์ƒ์„ฑ์€ ๊ฐ€๋ฆฌํ‚ฌ ๊ฐ์ฒด๋ฅผ ํ•˜๋‚˜ ์ค€๋น„ํ•˜๊ณ , ์Šค๋งˆํŠธ ํฌ์ธํ„ฐ์˜ ๋‚ด๋ถ€์— ์žˆ๋Š” ๋ฒ™์–ด๋ฆฌ ํฌ์ธํ„ฐ๋ฅผ ๊ทธ ๊ฐ์ฒด์˜ ์ฃผ์†Œ๋กœ ์„ธํŒ…ํ•˜๋Š”๊ฒƒ์œผ๋กœ ๋ ! ! ๊ทธ๋Ÿฐ๋ฐ ๊ทธ๋ƒฅ ๋ฒ™์–ด๋ฆฌ ํฌ์ธํ„ฐ์— ํฌ์ธํ„ฐ ๋ณต์‚ฌํ•˜๋ฉด ์‚ญ์ œ๋ ๋•Œ ๋‘๋ฒˆ์‚ญ์ œ๋˜๋Š” ๋ฌธ์ œ ์žˆ์„์ˆ˜ ์žˆ์Œ ๊ทธ๋Ÿฌ๋ฉด ๊ฐ’ ๋ณต์‚ฌ? -> ์„ฑ๋Šฅ ์ €ํ•˜ ! -> ๋ณต์‚ฌ ๋Œ€์ž…์„ ๋ชปํ•˜๊ฒŒ ํ•˜๋ฉด ๋ฌธ์ œ ํ•ด๊ฒฐ ! ->ํ•˜์ง€๋งŒ auto_ptr์€ ๋ณต์‚ฌ, ๋Œ€์ž…๋ ๋•Œ ์†Œ์œ  ๊ด€๊ณ„๋ฅผ ์˜ฎ๊น€ ! -> ๊ทธ๋Ÿฌ๋ฏ€๋กœ ๊ฐ’ ์˜ฎ๊ธฐ๋Š” ๊ฒƒ์„ ์ฃผ์˜
  • 18. ์—ญ์ฐธ์กฐ(Dereferencing) ์—ฐ์‚ฐ์ž ๊ตฌํ˜„ํ•˜๊ธฐ operator*, operator-> ์Šค๋งˆํŠธ ํฌ์ธํ„ฐ๊ฐ€ ๊ฐ€๋ฆฌํ‚ค๋Š” ๊ฐ์ฒด๋ฅผ ๋ฐ˜ํ™˜ํ•˜๋Š” ํ•จ์ˆ˜ ์ฐธ์กฐ์ž๋ฅผ ๋ฐ˜ํ™˜ํ•ด์•ผ์ง€ ๊ฐ์ฒด๋ฅผ ๋ฐ˜ํ™˜ํ•˜๋ฉด ์Šฌ๋ผ์ด์Šค ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒ null์ผ๋•Œ๋Š” ์–ด์ฉ”์ˆ˜ ์—†์Œ ์˜ˆ์™ธ์ฒ˜๋ฆฌ ํ•ด์•ผํ•จ ์Šค๋งˆํŠธ ํฌ์ธํ„ฐ๊ฐ€ null์ธ์ง€ ์ ๊ฒ€ํ•˜๊ธฐ isNull๊ฐ™์€ ๋ฉค๋ฒ„ ํ•จ์ˆ˜๋ฅผ ์ถ”๊ฐ€ํ•˜๋Š”๊ฑด ๋ณ„๋กœ ์Šค๋งˆํŠธ ํ•ด๋ณด์ด์ง€ ์•Š์Œ ํƒ€์ž…๋ณ€ํ™˜ ์—ฐ์‚ฐ์ž๋ฅผ void*๋กœ ๋ฐ”๊พธ๋ฉด ์Šค๋งˆํŠธ ํฌ์ธํ„ฐ๊ฐ€ ๋„์ด๋ฉด 0์„ ๋ฐ˜ํ™˜ํ•˜๊ณ  ์•„๋‹ˆ๋ฉด 0์ด ์•„๋‹Œ ๊ฐ’์„ ๋ฐ˜ํ™˜ํ•œ๋‹ค. ํ•˜์ง€๋งŒ ์™„์ „์น˜ ์•Š์Œโ€ฆ
  • 19. ์Šค๋งˆํŠธ ํฌ์ธํ„ฐ๋ฅผ ๋ฒ™์–ด๋ฆฌ ํฌ์ธํ„ฐ๋กœ ๋ณ€ํ™˜ํ•˜๊ธฐ ์•”์‹œ์ ์œผ๋กœ ํƒ€์ž…์„ ๋ณ€ํ™˜ํ•˜๋Š” ์—ฐ์‚ฐ์ž๋ฅผ ์ œ๊ณตํ•˜๋ฉด ๋˜์ง€๋งŒ ์ง์ ‘ ๋ฒ™์–ด๋ฆฌ ํฌ์ธํ„ฐ๋ฅผ ์กฐ์ž‘ํ•˜์˜€๋‹ค๊ฐ„ ์ฐธ์กฐ ์นด์šดํŒ…์— ํ•„์š”ํ•œ ์ •๋ณด๊ฐ€ ์กฐ์ •๋˜์ง€ ์•Š์•„์„œ ๋‘๋ฒˆ์‚ญ์ œ๋˜๊ฑฐ๋‚˜ ์—ฌ๋Ÿฌ ๋ฌธ์ œ๋ฅผ ์ผ์œผํ‚จ๋‹ค. -> ๊ฐ€๋Šฅํ•˜๋ฉด ํ•˜์ง€ ๋ง์ž. ์Šค๋งˆํŠธ ํฌ์ธํ„ฐ์™€ ์ƒ์† ๊ธฐ๋ฐ˜์˜ ํƒ€์ž…๋ณ€ํ™˜ ์ƒ์† ๊ด€๊ณ„์— ์žˆ์–ด๋„ ์Šค๋งˆํŠธ ํฌ์ธํ„ฐ๋Š” ๋ณ€ํ™˜์„ ๋ชปํ•ด์ค€๋‹ค. ! ์•”์‹œ์  ํƒ€์ž… ์—ฐ์‚ฐ์ž๋ฅผ ๋งŒ๋“ค๊นŒ? -> ํ…œํ”Œ๋ฆฟ์˜ ์ฒ ํ•™๊ณผ ๋‹ค๋ฅด๋‹ค -> ํด๋ž˜์Šค ๊ณ„ํ†ต ๊ตฌ์กฐ๊ฐ€ ๊นŠ์œผ๋ฉด ๋” ๋งŽ์€ ๋ณ€ํ™˜ ์—ฐ์‚ฐ์ž ์ถ”๊ฐ€ํ•ด์•ผํ•จ ! ์•”์‹œ์  ๋ณ€ํ™˜ ์—ฐ์‚ฐ์ž๋ฅผ ๋งŒ๋“œ๋Š” ํ…œํ”Œ๋ฆฟ์„ ๋งŒ๋“ค์ž -> ๊ฐ€๋…์„ฑ์ดโ€ฆ
  • 20. ์Šค๋งˆํŠธ ํฌ์ธํ„ฐ ์Šค๋งˆํŠธ ํฌ์ธํ„ฐ ์“ธ๋ ค๋ฉด ์‹ ๊ฒฝ์จ์•ผ ํ•˜๋Š” ๊ฒฝ์šฐ๊ฐ€ ๋งŽ์Œ ๋„ ์ ๊ฒ€์ด๋‚˜ ๋ฒ™์–ด๋ฆฌ ํฌ์ธํ„ฐ๋กœ์˜ ๋ณ€ํ™˜, ์ƒ์† ๊ธฐ๋ฐ˜์˜ ๋ณ€ํ™˜, ์ƒ์ˆ˜ ๊ฐ์ฒด์— ๋Œ€ํ•œ ํฌ์ธํ„ฐ ์ง€์›๋“ฑ์˜ ์ƒํ™ฉ์—์„œ๋Š” ์Šค๋งˆํŠธ ํฌ์ธํ„ฐ ์‚ฌ์šฉ์„ ์ œํ•œํ•ด์•ผํ•จ ! ๊ตฌํ˜„๋„ ํž˜๋“ค๊ณ  ์ดํ•ดํ•˜๊ธฐ๋„ ํž˜๋“ค๊ณ  ์œ ์ง€๋ณด์ˆ˜๋„ ํž˜๋“ค๋‹ค ๋””๋ฒ„๊น…๋„ ํ›จ์”ฌ ํž˜๋“ค์–ด ์ง„๋‹ค. ! ํ•˜์ง€๋งŒ ์ฐธ์กฐ ์นด์šดํŒ… ์ฝ”๋“œ์—์„œ๋Š” ์Šค๋งˆํŠธ ํฌ์ธํ„ฐ๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ์ƒ๋‹นํžˆ ๋‹จ์ˆœํ•ด ์ง„๋‹ค๋˜์ง€ ๋‹ค๋ฅธ ๋ฐฉ๋ฒ•์œผ๋ก  ๊ตฌํ˜„ํ•˜๊ธฐ ํž˜๋“  ๊ธฐ๋Šฅ์„ ๊ตฌ์‚ฌํ•˜๋Š”๋ฐ ํšจ๊ณผ์ ์ด๋‹ค.
  • 21. ์ฐธ์กฐ ์นด์šดํŒ…(Reference Counting) ์—ฌ๋Ÿฌ ๊ฐœ์˜ ๊ฐ์ฒด๋“ค์ด ๋˜‘๊ฐ™์€ ๊ฐ’์„ ๊ฐ€์กŒ์œผ๋ฉด, ๊ทธ ๊ฐ์ฒด๋“ค๋กœ ํ•˜์—ฌ๊ธˆ ๊ทธ ๊ฐ’์„ ๋‚˜ํƒ€๋‚ด๋Š” ํ•˜๋‚˜์˜ ๋ฐ์ดํ„ฐ๋ฅผ ๊ณต์œ ํ•˜๊ฒŒ ํ•ด์„œ ๋ฐ์ดํ„ฐ์˜ ์–‘์„ ์ ˆ์•ฝํ•˜๋Š” ๊ธฐ๋ฒ• ! -ํž™ ๊ฐ์ฒด๋ฅผ ๋‘˜๋Ÿฌ์‹ผ ๋‚ด๋ถ€ ์ •๋ณด๋ฅผ ์œ ์ง€ํ•˜๋Š” ์ž‘์—…์„ ๋‹จ์ˆœํ•˜๊ฒŒ ํ•˜์ž -๋˜‘๊ฐ™์€ ๊ฐ’์„ ๊ฐ€์ง€๊ณ  ์žˆ๋Š” ๊ฐ์ฒด๋“ค์ด ๊ทธ ์ค‘๋ณต์„ ๋†”๋‘๋Š” ๊ฒƒ์€ ๋‚ญ๋น„ ํ•˜์ง€๋งŒ ์†Œ๋ฉธ์€?
  • 22. ์ฐธ์กฐ ํšŸ์ˆ˜๋ฅผ ๊ธฐ๋กํ•˜๊ณ  ์žˆ๋‹ค๊ฐ€ 0์ด๋˜๋ฉด ์‚ญ์ œํ•ด์„œ ๋ฉ”๋ชจ๋ฆฌ ๋ˆ„์ˆ˜๋ฅผ ๋ง‰์ž ! ์‚ฌ์šฉ ์นด์šดํŠธ(use count)๋ผ๊ณ  ๋ถ€๋ฅด๊ธฐ๋„ ํ•จ
  • 23. ๋Œ€์ž…์‹œ์—๋Š” ์ฐธ์กฐ ์นด์šดํŠธ๋ฅผ ๋Š˜๋ฆฌ๊ณ  ๋™์ผํ•œ ๊ฒƒ์„ ๋ฐ˜ํ™˜ํ•˜๊ณ  ์นด์šดํŠธ๊ฐ€ 0์ด๋ฉด ์‚ญ์ œ
  • 24. ๊ธฐ๋ก์‹œ์  ๋ณต์‚ฌ(Copy-on-Write) ๊ณต์œ ์ค‘์ด๋˜ ๊ฒƒ์„ ํ•˜๋‚˜๊ฐ€ ์ˆ˜์ •์ด ๋˜์–ด์•ผ ํ•  ๋•Œ์—๋Š” ๋‹ค๋ฅธ ๊ณต์œ ๋˜์–ด์žˆ๋Š” ์• ํ•œํ…Œ ์˜ํ–ฅ์ด ๊ฐ€์ง€ ์•Šํ† ๋ก ์‚ฌ๋ณธ์„ ๋งŒ๋“ค์–ด์„œ ๋ฐ˜ํ™˜์„ ํ•œ๋‹ค.
  • 25. ํฌ์ธํ„ฐ, ์ฐธ์กฐ์ž, ๊ทธ๋ฆฌ๊ณ  ๊ธฐ๋ก์‹œ์  ๋ณต์‚ฌ ? ? ? ์–‘์ชฝ๋‹ค ๊ฐ’์ด ๋ณ€๊ฒฝ๋จโ€ฆ ์ด๋ ‡๊ฒŒ ๋˜๋„๋ก ๊ตฌํ˜„๋œ ๊ฒฝ์šฐ๊ฐ€ ๋งŽ์Œ
  • 26. ๊ณต์œ  ๊ฐ€๋Šฅ์„ฑ(shareability)์„ ๋‚˜ํƒ€๋‚ด๋Š” ํ”Œ๋ž˜๊ทธ๋ฅผ ๋„ฃ์–ด ๊ฐ์ฒด๊ฐ€ ๊ณต์œ ๊ฐ€๋Šฅ ์—ฌ๋ถ€๋ฅผ ๋‚˜ํƒ€๋‚ด๊ณ  operator[]๊ฐ€ ๋ถˆ๋ฆฌ๋ฉด false๋กœ ๋ฐ”๊พธ์–ด์„œ ๊ณต์œ  ๋ถˆ๊ฐ€๋Šฅ์œผ๋กœ ๋งŒ๋“ ๋‹ค.
  • 27. ์ฐธ์กฐ ์นด์šดํŒ… ๊ธฐ๋Šฅ์„ ๊ฐ€์ง„ ๊ธฐ๋ณธ ํด๋ž˜์Šค ๊ธฐ์กด์˜ ํด๋ž˜์Šค์— ์ƒ์†์„ ๋ฐ›๋Š” ๊ฒƒ์œผ๋กœ ์ฐธ์กฐ ์นด์šดํŠธ ๊ธฐ๋Šฅ์„ ๋„ฃ์ž. -๊ธฐ๋Šฅ- ์ฐธ์กฐ ์ถ”๊ฐ€(์นด์šดํŠธ ์ฆ๊ฐ€) ์ฐธ์กฐ ์ œ๊ฑฐ(์นด์šดํŠธ ๊ฐ์†Œ) ์ฐธ์กฐ ๊ฐ€๋Šฅ์„ฑ ํ”Œ๋ž˜๊ทธ๋กœ ํ”Œ๋ž˜๊ทธ ์กฐํšŒ๋‚˜ ๋น„ํ™œ์„ฑํ™”
  • 28. ์ฐธ์กฐ ์นด์šดํŠธ ์กฐ์ž‘์„ ์ž๋™ํ™”ํ•˜๊ธฐ ์•ž์˜ RCObject์—๋Š” ์ฐธ์กฐ ์นด์šดํŠธ๋ฅผ ์ €์žฅํ•  ์ˆ˜ ์žˆ๋Š” ๊ณต๊ฐ„๊ณผ ์ฐธ์กฐ์นด์šดํŠธ๋ฅผ ์กฐ์ž‘ํ•  ์ˆ˜ ์žˆ๋Š” ๋ฉค๋ฒ„ ํ•จ์ˆ˜๊ฐ€ ์žˆ๋Š”๋ฐ ์ด ํ•จ์ˆ˜๋Š” ์ง์ ‘ ํ˜ธ์ถœํ•ด ์ฃผ์–ด์•ผ ํ•˜๋‹ˆ ์ด๋Ÿฐ ํ˜ธ์ถœ ์ฝ”๋“œ๋„ ์žฌ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•œ ํด๋ž˜์Šค์—๊ฒŒ ๋ชฐ์•„์ค˜๋ณด์ž. ๊ฐ’์ด ๋‹ค๋ฅด๋ฉด ๊ธฐ์กด์˜ ๊ฐ’์„ ์ €์žฅํ•˜๊ณ  ๊ณต์œ ๋‚˜ ์‚ฌ๋ณธ์„ ๋งŒ๋“ค๊ณ  ์ฐธ์กฐ ์ œ๊ฑฐ ์†Œ๋ฉธ์ž๋Š” ๊ทธ๋ƒฅ ์ฐธ์กฐ ์ œ๊ฑฐ
  • 29. ์ฐธ์กฐ ์นด์šดํŒ… ๊ฒฐ๋ก  ์ข‹์•„ ๋ณด์ด์ง€๋งŒ ๊ฒฐ๊ตญ ์–ด๋Š ์ƒํ™ฉ์— ์ ํ•ฉํ•˜๋ƒ๊ฐ€ ์ค‘์š” ๋งค๋ฒˆ ์นด์šดํŠธ๋ฅผ ์ œ์–ดํ•˜๊ณ  ๋ณด๊ด€ํ•˜๋Š” ๋น„์šฉ๋„ ์ถ”๊ฐ€๋กœ ๋“ค๊ณ  ์ฝ”๋“œ๋„ ๋ณต์žกํ•˜๊ฒŒ ๋œ๋‹ค. -> ์œ ์ง€๋ณด์ˆ˜ ํ—ฌ ์ž๊ธฐ ์ฐธ์กฐํ˜•(self-referential) ํ˜น์€ ์›ํ˜• ์˜์กดํ˜• (circular dependency)๊ตฌ์กฐ (ํŠธ๋ฆฌ ๋“ฑ)์—์„œ๋Š” ์ ์šฉ์ด ํž˜๋“ค๋‹ค. ! ํ•˜์ง€๋งŒ ์ƒ๋Œ€์ ์œผ๋กœ ๋งŽ์€ ๊ฐ์ฒด๋“ค์ด ์ƒ๋Œ€์ ์œผ๋กœ ์ ์€ ๊ฐ’์„ ๊ณต์œ ํ•  ๋•Œ, ์–ด๋–ค ๊ฐ์ฒด๊ฐ’์„ ์ƒ์„ฑํ•˜๊ฑฐ๋‚˜ ์†Œ๋ฉธ์‹œํ‚ค๋Š”๋ฐ ๋งŽ์€ ๋น„์šฉ์ด ๋“ค๊ฑฐ๋‚˜ ๋ฉ”๋ชจ๋ฆฌ ์†Œ๋ชจ๊ฐ€ ํด๋•Œ ํฐ ํšจ๊ณผ๋ฅผ ๋ฐœํœ˜ํ•œ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ์ƒ์„ฑ ์†Œ๋ฉธ์„ ๋œ ์‹ ๊ฒฝ์จ๋„ ๋˜์–ด์„œ ํŽธํ•˜๋‹ค. ! ๊ทธ๋ฆฌ๊ณ  ์ด ์กฐ๊ฑด์— ๋งŒ์กฑํ•˜๋Š”์ง€ ํŒ๋‹จํ•˜๋Š” ๋ฐฉ๋ฒ•์€ ํ”„๋กœํŒŒ์ผ๋ง