More Effective C++ ์ •๋ฆฌ
131054 ์ด์ธ์žฌ
ํ•ญ๋ชฉ 1 : ํฌ์ธํ„ฐ์™€ ์ฐธ์กฐ์ž๋ฅผ ๊ตฌ๋ถ„
ํ•˜์ž
1. ํฌ์ธํ„ฐ๋Š” โ€œ*โ€ ์™€ โ€œ->โ€์—ฐ์‚ฐ์ž ์‚ฌ์šฉ
2. ์ฐธ์กฐ์ž๋Š” โ€œ.โ€์„ ์‚ฌ์šฉ
3. ์–ด๋–ค ๊ฐ์ฒด๋ฅผ ์ฐธ์กฐํ•˜๋Š” ๋ถ€๋ถ„์— ๊ผญ ๊ฐ์ฒด๊ฐ€ ์žˆ์ง€ ์•Š์„
๊ฒฝ์šฐ๋„ ์žˆ๋‹ค๋ฉด? ํฌ์ธํ„ฐ๋ฅผ ์จ์•ผํ•œ๋‹ค
4. ๋ฐ˜๋Œ€๋กœ ๊ฐ์ฒด๊ฐ€ ๋ฐ˜๋“œ์‹œ ์žˆ๋‹ค๊ณ  ํ™•์‹ ํ•  ์ˆ˜ ์žˆ๋‹ค๋ฉด? ์ฐธ
์กฐ์ž๋ฅผ ์จ์•ผํ•œ๋‹ค.
์ฐธ์กฐ์ž
1. ์ฐธ์กฐ์ž์— NULL ๊ฐ’์„ ์–ต์ง€๋กœ ๋„ฃ๋Š” ์ฝ”๋“œ๋Š” ๋ฌด์‹œ!( ํ•ด์„œ๋Š”
์ ˆ๋Œ€ ์•ˆ๋จ)
์ฐธ์กฐ์ž
1. ์ฐธ์กฐ์ž๋Š” ๋ฐ˜๋“œ์‹œ ์„ ์–ธ๊ณผ ๋™์‹œ์— ์ดˆ๊ธฐํ™” ํ•„์š”
ํฌ์ธํ„ฐ
1. ํฌ์ธํ„ฐ๋Š” NULL๊ฐ์ฒด๊ฐ€ ์˜ฌ ์ˆ˜ ์žˆ๊ณ , ์„ ์–ธ๊ณผ ๋™์‹œ์— ์ดˆ๊ธฐ
ํ™” ํ•  ํ•„์š”๊ฐ€ ์—†๋‹ค.
2. ํฌ์ธํ„ฐ๋Š” NULL๊ฐ’์„ ํ•ญ์ƒ ์ฒดํฌํ•ด์•ผ ํ•œ๋‹ค
์ฐธ์กฐ์ž์™€ ํฌ์ธํ„ฐ์˜ ์ฐจ์ด
1. ์ฐธ์กฐ์ž๋Š” ๊ฐ€๋ฆฌํ‚ค๋Š” ๋Œ€์ƒ์„ ๋ฐ”๊ฟ€ ์ˆ˜ ์—†๋‹ค.
2. ์ฒ˜์Œ ์ดˆ๊ธฐํ™” ํ•œ ๋Œ€์ƒ๋งŒ์„ ๊ณ„์† ์ฐธ์กฐ
์ฐธ์กฐ์ž์™€ ํฌ์ธํ„ฐ์˜ ์ฐจ์ด
1. ํฌ์ธํ„ฐ๋Š” ๊ฐ€๋ฆฌํ‚ค๋Š” ๋Œ€์ƒ์„ ๋ณ€๊ฒฝํ•  ์ˆ˜ ์žˆ๋‹ค
ํฌ์ธํ„ฐ์™€ ์ฐธ์กฐ์ž๋Š” ์–ด๋””์—?
1. ํฌ์ธํ„ฐ๋ฅผ ์จ์•ผ ํ•˜๋Š” ๊ฒฝ์šฐ๋Š” ๊ฐ€๋ฆฌํ‚ฌ ๊ฐ์ฒด์˜ ์ฃผ์†Œ๊ฐ€
์—†์„ ์ˆ˜๋„ ์žˆ์„ ๋•Œ
2. ํ•˜๋‚˜์˜ ๋ณ€์ˆ˜๋ฅผ ๊ฐ€์ง€๊ณ  ์—ฌ๋Ÿฌ ๊ฐœ์˜ ๊ฐ์ฒด๋ฅผ ๋ฐ”๊พธ์–ด ์ฐธ
์กฐํ•ด์•ผ ํ•  ๋•Œ( ํฌ์ธํ„ฐ์—๋Š” ์ฃผ์†Œ๊ฐ’์„ ๋ฐ”๊พธ์–ด ๋Œ€์ž…ํ•˜
๋ฉด ๋œ๋‹ค)
3. ์ฐธ์กฐ์ž๋Š” ์ฐธ์กฐํ•  ํฌ์ธํ„ฐ๊ฐ€ ์ฒ˜์Œ๋ถ€ํ„ฐ ๋๊นŒ์ง€ ์กด์žฌํ•˜
๊ณ , ์ฐธ์กฐํ•˜๋Š” ๋Œ€์ƒ ๊ฐ์ฒด๋ฅผ ๋ฐ”๊ฟ€ ํ•„์š”๊ฐ€ ์—†์„ ๋•Œ
๋ฐ˜๋“œ์‹œ ์ฐธ์กฐ์ž๋ฅผ ์จ์•ผํ•˜๋Š” ๊ฒฝ์šฐ
1. ์—ฐ์‚ฐ์ž ํ•จ์ˆ˜๋ฅผ ๊ตฌํ˜„ํ•  ๋•Œ
2. Operator[]์ด ๊ฐ€์žฅ ํ”ํ•œ ์˜ˆ์‹œ, ์ด ์—ฐ์‚ฐ์ž๋Š” ๋Œ€์ž… ์—ฐ์‚ฐ
์ž์˜ ์ขŒ๋ณ€์œผ๋กœ ์“ธ ์ˆ˜ ์žˆ๋Š” ๊ฐ’์„ ๋ฐ˜ํ™˜ํ•ด ์ฃผ๋„๋ก ๋งŒ๋“œ
๋Š” ๊ฒƒ์ด ๋ณดํ†ต
ํ•ญ๋ชฉ 1 ์ •๋ฆฌ
1. ์ฐธ์กฐํ•˜๊ณ ์žํ•˜๋Š” ์–ด๋–ค ๊ฐ์ฒด๋ฅผ ๋ฏธ๋ฆฌ ์•Œ๊ณ ์žˆ๊ณ , ์ด ๊ฐ
์ฒด๋ฅผ ๋‹ค๋ฅธ ๊ฐ์ฒด๋กœ ๋ฐ”๊ฟ€ ์ผ๋„ ์—†๊ณ , ๋„ ๊ฐ’๋„ ๋˜์ง€์•Š๋Š”
๋‹ค๋Š” ๋ณด์žฅ์ด ์žˆ์„๋•Œ๋Š”? -> ์ฐธ์กฐ์ž
2. ๊ทธ ์ด์™ธ์—๋Š” ๋ฌด์กฐ๊ฑด ํฌ์ธํ„ฐ
ํ•ญ๋ชฉ 2 : ๊ฐ€๋Šฅํ•œ C++ ์Šคํƒ€์ผ์˜ ์บ
์ŠคํŠธ๋ฅผ ์ฆ๊ฒจ ์“ฐ์ž
1. go to ๋ฌธ๊ณผ ํ•จ๊ป˜ ๊ฐ€์žฅ ๊ธฐํ”ผํ•ด์•ผํ•  ํ‚ค์›Œ๋“œ๊ฐ€ โ€œ์บ์ŠคํŠธโ€
2. C์Šคํƒ€์ผ์˜ ์บ์ŠคํŠธ๋Š” ์–ด๋–ค ํƒ€์ž…์„ ๋‹ค๋ฅธ ํƒ€์ž…์œผ๋กœ ์•„๋ฌด ์ƒ
๊ฐ ์—†์ด ๋ฐ”๊พธ์–ด์คŒ -> ์œ„ํ—˜
3. C์Šคํƒ€์ผ์˜ ์บ์ŠคํŠธ๋ฅผ ์จ์„œ ๋ฌธ์ œ๊ฐ€ ์ƒ๊ธธ๊ฒฝ์šฐ ํ”„๋กœ๊ทธ๋ž˜๋จธ
์ž…์žฅ์—์„œ ๋ฐœ๊ฒฌํ•˜๊ธฐ๊ฐ€ ํž˜๋“ค๋‹ค
4. C++์Šคํƒ€์ผ์˜ ํƒ€์ž… ์บ์ŠคํŒ…์€ (C++ static_cast์˜ˆ์‹œ)
(ํƒ€์ž…) ํ‘œํ˜„์‹ ์ด ์•„๋‹ˆ๋ผ
static_cast<ํƒ€์ž…>(ํ‘œํ˜„์‹) ์œผ๋กœ ์“ด๋‹ค.
-> C++์Šคํƒ€์ผ์˜ ์บ์ŠคํŠธ๊ฐ€ ๋”์šฑ ์ž˜ ๋ˆˆ์— ๋ˆ๋‹ค.
C ์Šคํƒ€์ผ ์บ์ŠคํŠธ
C++ ์Šคํƒ€์ผ ์บ์ŠคํŠธ
const_cast
1. ์ƒ์ˆ˜์„ฑ์ด๋‚˜ ํœ˜๋ฐœ์„ฑ์„ ์ œ๊ฑฐํ•˜๋Š”๋ฐ ์“ฐ์ด๋Š” ์บ์ŠคํŒ…
const_cast๋Š” ์–ธ์ œ ์“ฐ์ด๋‚˜?
1. const_cast๋ฅผ ์จ์„œ ์ƒ์ˆ˜์„ฑ์„ ์ œ๊ฑฐ ๊ฐ€๋Šฅ
dynamic_cast
1. ์ƒ์† ๊ณ„์ธต ๊ด€๊ณ„๋ฅผ ๊ฐ€๋กœ์ง€๋ฅด๊ฑฐ๋‚˜ ํ•˜ํ–ฅ์‹œํ‚จ ํด๋ž˜์Šคํƒ€์ž… ์บ์ŠคํŒ…
2. ๊ธฐ๋ณธํด๋ž˜์Šค์˜ ๊ฐ์ฒด์— ๋Œ€ํ•œ ํฌ์ธํ„ฐ๋‚˜ ์ฐธ์กฐ์ž์˜ ํƒ€์ž…์„ ํŒŒ์ƒ ํด๋ž˜์Šค,
ํ˜น์€ ํ˜•์žฌ ํด๋ž˜์Šค์˜ ํƒ€์ž…์œผ๋กœ ๋ณ€ํ™˜ํ•ด ์คŒ
3. ์บ์ŠคํŒ… ์‹คํŒจ์‹œ NULL๊ฐ’ ๋ฆฌํ„ด
dynamic_cast๋Š” ์–ธ์ œ ์“ฐ์ด๋‚˜
?
1. Animal ํฌ์ธํ„ฐ๋ฅผ Catํฌ์ธํ„ฐ ํƒ€์ž…์œผ๋กœ ๋‹ค์šด์บ์ŠคํŒ… ํ•ด์ค€
๋‹ค
๋‹ค์šด ์บ์ŠคํŒ…์˜ ์ œ์•ฝ ์กฐ๊ฑด
1. ์ƒ์† ๊ณ„์ธต ๊ตฌ์กฐ๋ฅผ ์˜ค๊ฐˆ ๋•Œ์—๋งŒ ์‚ฌ์šฉํ•ด์•ผ
ํ•จ
2. ๊ฐ€์ƒ ํ•จ์ˆ˜๊ฐ€ ์—†๋Š” ํƒ€์ž…์—๋Š” ์ ์šฉํ•  ์ˆ˜ ์—†
์Œ
3. ์ƒ์ˆ˜์„ฑ ์ œ๊ฑฐ์— ์“ธ ์ˆ˜ ์—†์Œ
reinterpret_cast
1. ๊ฐ€์žฅ ํ”ํ•œ ์šฉ๋„๋Š” ํ•จ์ˆ˜ ํฌ์ธํ„ฐ ํƒ€์ž…์„ ์„œ๋กœ ๋ฐ”๊พธ๋Š” ๊ฒƒ
2. ์ด ์—ฐ์‚ฐ์ž๊ฐ€ ์ ์šฉ๋œ ํ›„์˜ ๋ณ€ํ™˜ ๊ฒฐ๊ณผ๋Š” ๊ฑฐ์˜ ํ•ญ์ƒ ์ปดํŒŒ์ผ
๋Ÿฌ์— ๋”ฐ๋ผ ๋‹ค๋ฅด๊ฒŒ ์ •์˜
์ฃผ์˜์ 
1. ํ•จ์ˆ˜ ํฌ์ธํ„ฐ์˜ ์บ์ŠคํŒ…์€ ์†Œ์Šค์˜ ์ด์‹์„ฑ
์„ ๋–จ์–ด๋œจ๋ฆผ
2. ์ด๋Ÿฐ ์บ์ŠคํŒ…์€ ์ž˜๋ชป๋œ ๊ฒฐ๊ณผ๋ฅผ ๋‚ผ ์ˆ˜๋„ ์žˆ
์Œ
ํ•ญ๋ชฉ2 ์ •๋ฆฌ
1. C++์Šคํƒ€์ผ์ด C์Šคํƒ€์ผ์˜ ์บ์ŠคํŠธ๋ณด๋‹ค ๋”
๋ณด๊ธฐ์— ์ข‹๊ณ , ์ฝ์–ด๋‚ด๊ธฐ์—๋„ ์‰ฝ๋‹ค
2. ๋‹ค๋ฅธ ํ”„๋กœ๊ทธ๋ž˜๋จธ์—๊ฒŒ ํ™•์‹คํ•œ ์˜๋ฏธ์™€ ์ธ
์‹์„ฑ์„ ์„ ์‚ฌํ•  ์ˆ˜ ์žˆ์Œ
3. ์•„๋ฌด๋ฆฌ C++์Šคํƒ€์ผ์˜ ์บ์ŠคํŠธ๋ผ๊ณ  ํ•ด๋„
์ตœ๋Œ€ํ•œ ํ”ผํ•ด์•ผ ํ•˜๋Š” ๊ฒƒ์ด ๊ถŒ์žฅ์‚ฌํ•ญ
ํ•ญ๋ชฉ 3 : ๋ฐฐ์—ด๊ณผ ๋‹คํ˜•์„ฑ์€ ๊ฐ™์€ ์ˆ˜
์ค€์œผ๋กœ ๋†“๊ณ  ๋ณผ ๊ฒƒ์ด ์•„๋‹ˆ๋‹ค
1. ์ƒ์†์„ฑ์ด ์ฃผ๋Š” ๊ฐ€์žฅ ์ค‘์š”ํ•œ ํ˜œํƒ ์ค‘ ํ•˜๋‚˜๋Š”, ๊ธฐ๋ณธ ํด
๋ž˜์Šค ๊ฐ์ฒด์˜ ํฌ์ธํ„ฐ๋‚˜ ์ฐธ์กฐ์ž๋ฅผ ํ†ตํ•ด ํŒŒ์ƒ ํด๋ž˜์Šค
๊ฐ์ฒด๋ฅผ ์กฐ์ž‘ํ•  ์ˆ˜ ์žˆ๋‹ค๋Š” ์ 
2. ์ด๋ ‡๊ฒŒ ์“ฐ์ด๋Š” ํฌ์ธํ„ฐ๋‚˜ ์ฐธ์กฐ์ž๋ฅผ ๊ฐ€๋ฆฌ์ผœ โ€œ ๋‹คํ˜•์„ฑ
์„ ๊ฐ€์ง€๊ณ  ์žˆ๋‹คโ€๋ผ๊ณ  ๋งํ•จ
3. ํŒŒ์ƒ ํด๋ž˜์Šค ๊ฐ์ฒด์˜ ๋ฐฐ์—ด์„ ๊ธฐ๋ณธ ํด๋ž˜์Šค ํฌ์ธํ„ฐ๋‚˜
์ฐธ์กฐ์ž๋ฅผ ํ†ตํ•ด ์กฐ์ž‘ํ•˜๋Š” ๊ฒƒ๋„ ๋จ
๋‹คํ˜•์„ฑ๊ณผ ํฌ์ธํ„ฐ ์‚ฐ์ˆ  ์—ฐ์‚ฐ์€ ๊ฐ„๋‹จํžˆ
์„ž์ด์ง€ ์•Š์Œ
1. ๋ฐฐ์—ด์ด ์‚ญ์ œ๋  ๋•Œ, ๋ฐฐ์—ด์˜ ๊ฐ ์š”์†Œ ๊ฐ์ฒด์— ๋Œ€ํ•ด ์†Œ๋ฉธ์ž๊ฐ€ ํ˜ธ์ถœ
2. ๊ธฐ๋ณธ ํด๋ž˜์Šค ํฌ์ธํ„ฐ๋ฅผ ํ†ตํ•ด ํŒŒ์ƒ ํด๋ž˜์Šค ๊ฐ์ฒด์˜ ๋ฐฐ์—ด์„ ์‚ญ์ œํ•œ
๊ฒฐ๊ณผ๋Š” โ€œ์ •์˜๋˜์ง€ ์•Š์Œโ€
3. ์–ด๋–ค ๊ตฌ์ฒด ํด๋ž˜์Šค๋ถ€ํ„ฐ ๋˜ ๋‹ค๋ฅธ ๊ตฌ์ฒด ํด๋ž˜์Šค๋ฅผ ํŒŒ์ƒ์‹œํ‚ค๋Š” ์ผ๋งŒ
์—†์œผ๋ฉด, ๊ฐ์ฒด์˜ ๋ฐฐ์—ด์„ ๋‹คํ˜•์ ์œผ๋กœ ์กฐ์ž‘ํ•˜๋Š” ์‹ค์ˆ˜๋Š” ๋ณ„๋กœ ํ•˜์ง€
์•Š๋Š”๋‹ค
ํ•ญ๋ชฉ3 ์ •๋ฆฌ
1. ๊ธฐ๋ณธ ํด๋ž˜์Šค ํฌ์ธํ„ฐ๋ฅผ ํ†ตํ•ด ํŒŒ์ƒ ํด๋ž˜์Šค
๊ฐ์ฒด์˜ ๋ฐฐ์—ด์„ ์‚ญ์ œํ•œ ๊ฒฐ๊ณผ๋Š” โ€œ์ •์˜๋˜์ง€
์•Š์•˜๋‹คโ€
2. ๋‹คํ˜•์„ฑ๊ณผ ์‚ฐ์ˆ  ์—ฐ์‚ฐ์€ ๊ฐ„๋‹จํžˆ ์„ž์ด๋Š” ๊ฒƒ
์ด ์•„๋‹˜
3. ๋ฐฐ์—ด๊ณผ ๋‹คํ˜•์„ฑ์€ ๋ฌผ๊ณผ ๊ธฐ๋ฆ„์˜ ๊ด€๊ณ„
ํ•ญ๋ชฉ 4 : ์“ธ๋ฐ ์—†๋Š” ๊ธฐ๋ณธ ์ƒ์„ฑ์ž๋Š”
๊ทธ๋ƒฅ ๋‘์ง€ ๋ง์ž
1. ์ƒ์„ฑ์ž๋Š” ๊ฐ์ฒด๋ฅผ ์ดˆ๊ธฐํ™”ํ•˜๋Š” ์—ญํ• 
2. ์กฐ์‹ฌํ•ด์•ผํ•  ์ ์€ ์–ด๋–ค ๊ฐ์ฒด์˜ ๊ฒฝ์šฐ ์™ธ๋ถ€ ์ •๋ณด ์—†์ด
๋Š” ์™„์ „ํ•œ ์ดˆ๊ธฐํ™”๋ฅผ ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์—†๋Š” ๊ฒฝ์šฐ๊ฐ€ ์žˆ์Œ ->
ํด๋ž˜์Šค ์„ค๊ณ„์— ๋”ฐ๋ผ ์‚ฌ์›ํด๋ž˜์Šค์— โ€˜์‚ฌ์›๋ฒˆํ˜ธโ€™๊ฐ€ ์—†๋‹ค
๋“ ์ง€ ์ด๋Ÿฐ ์ •๋ณด๋“ค์ด ์—†์œผ๋ฉด ์ดˆ๊ธฐํ™”ํ•  ์ˆ˜ ์—†์Œ
๊ธฐ๋ณธ ์ƒ์„ฑ์ž๊ฐ€ ์—†์„๋•Œ ๋ฌธ์ œ์ 
1
1. ๊ธฐ๋ณธ ์ƒ์„ฑ์ž๊ฐ€ ์—†์œผ๋ฉด ๋ฐฐ์—ด์„ ์ƒ์„ฑํ•  ๋•Œ , ๋ฐฐ์—ด์˜ ์š”์†Œ
๋กœ ๋“ค์–ด๊ฐ€๋Š” ๊ฐ์ฒด์— ๋Œ€ํ•ด ์ƒ์„ฑ์ž ๋งค๊ฐœ๋ณ€์ˆ˜๋ฅผ ์ง€์ •ํ•  ์ˆ˜
์—†๊ธฐ๋•Œ๋ฌธ์— ๋ฐฐ์—ด ์ƒ์„ฑ ๋ถˆ๊ฐ€๋Šฅ
์ƒ์„ฑ์ž ๋งค๊ฐœ๋ณ€์ˆ˜๋ฅผ ์ž…๋ ฅํ•˜์—ฌ ํ•ด
๊ฒฐ
1. ์ƒ์„ฑ์ž ๋งค๊ฐœ๋ณ€์ˆ˜๋ฅผ ์ง์ ‘ ์ž…๋ ฅ
ํฌ์ธํ„ฐ ๋ฐฐ์—ด์„ ์ด์šฉํ•˜์—ฌ ํ•ด๊ฒฐ
1. ํฌ์ธํ„ฐ์˜ ๋ฐฐ์—ด์„ ๋งŒ๋“ค์–ด ๊ฐ๊ฐ์ด ํ•˜๋‚˜์˜ ๊ฐ์ฒด๋ฅผ ๊ฐ€๋ฆฌํ‚ค
๋„๋ก ๋งŒ๋“ค์–ด์คŒ
ํฌ์ธํ„ฐ ๋ฐฐ์—ด ์‚ฌ์šฉ์˜ ๋ฌธ์ œ์ 
1. ๋ฐฐ์—ด ๋‚ด์˜ ๋ชจ๋“  ํฌ์ธํ„ฐ๊ฐ€ ๊ฐ€๋ฆฌํ‚ค๋Š” ๊ฐ์ฒด๋ฅผ ์‚ญ์ œํ•ด์•ผ ํ•จ
-> ๊ทธ๋ ‡์ง€ ์•Š์œผ๋ฉด ๋ฉ”๋ชจ๋ฆฌ ๋ˆ„์ˆ˜
2. ํ•„์š”ํ•œ ๋ฉ”๋ชจ๋ฆฌ ์‚ฌ์šฉ๋Ÿ‰์ด ๋Š˜์–ด๋‚จ
-> ๊ฐ์ฒด๋ฅผ ๋‹ด์„ ๋ฉ”๋ชจ๋ฆฌ ๊ณต๊ฐ„ ์ด์™ธ์— ํฌ์ธํ„ฐ๋ฅผ ๋‹ด์„ ๊ณต๊ฐ„
๋˜ํ•œ ํ•„์š”
๊ธฐ๋ณธ ์ƒ์„ฑ์ž๊ฐ€ ์—†์„๋•Œ ๋ฌธ์ œ์ 
21. ํ…œํ”Œ๋ฆฟ ๊ธฐ๋ฐ˜์˜ ์ปจํ…Œ์ด๋„ˆ ํด๋ž˜์Šค์™€ ์—ฐ๊ณ„ํ•  ์ˆ˜ ์—†๋‹ค
2. ์ปจํ…Œ์ด๋„ˆ ํด๋ž˜์Šค๋ฅผ ์ธ์Šคํ„ด์Šคํ™”ํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” ํ…œํ”Œ๋ฆฟ ๋งค๊ฐœ๋ณ€
์ˆ˜๋กœ ๋“ค์–ด๊ฐ€๋Š” ํƒ€์ž…์ด ๊ธฐ๋ณธ ์ƒ์„ฑ์ž๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ์–ด์•ผ ํ•˜๊ธฐ ๋•Œ
๋ฌธ.
3.
-> ๊ธฐ๋ณธ ์ƒ์„ฑ์ž๊ฐ€ ์—†๋Š” ํด๋ž˜์Šค๋ฅผ ํ…œํ”Œ๋ฆฟ ๋งค๊ฐœ๋ณ€์ˆ˜๋กœ ์“ธ ์ˆ˜ ์—†
์Œ!
ํ•ญ๋ชฉ 4 ์ •๋ฆฌ
1. ์“ธ ๋ฐ ์—†๋Š” ๊ธฐ๋ณธ ์ƒ์„ฑ์ž๋Š” ํด๋ž˜์Šค์˜ ํšจ์œจ์— ๊ฑธ๋ฆผ๋Œ
-> ๋ฉค๋ฒ„ ํ•จ์ˆ˜๋“ค์€ ํด๋ž˜์Šค์˜ ๋ฉค๋ฒ„๋ฐ์ดํ„ฐ๊ฐ€ ์ œ๋Œ€๋กœ ์ดˆ๊ธฐํ™”
๋˜์—ˆ๋Š”์ง€๋ฅผ ๊ฒ€์‚ฌํ•ด์•ผํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์‹คํ–‰์†๋„ ๋А๋ ค์ง
2. ์ถ”๊ฐ€๋œ ๊ฒ€์‚ฌ ์ฝ”๋“œ์˜ ํฌ๊ธฐ๋งŒํผ ์‹คํ–‰ ํŒŒ์ผ์ด ์ปค์ง
3. ์ด๋ฅผ ๋ง‰๊ธฐ์œ„ํ•ด ์ƒ์„ฑ์ž๊ฐ€ ๊ฐ์ฒด์˜ ๋ฉค๋ฒ„ ๋ฐ์ดํ„ฐ๋ฅผ ํ™•์‹คํžˆ
์ดˆ๊ธฐํ™” ํ•ด์•ผํ•จ
4. ํŠน๋ณ„ํ•œ ์ƒํ™ฉ์ด ์•„๋‹ˆ๋ฉด ๊ธฐ๋ณธ์ƒ์„ฑ์ž๋ฅผ ํ”ผํ•ด์•ผ ํ•จ
ํ•ญ๋ชฉ 5 : ์‚ฌ์šฉ์ž ์ •์˜ ํƒ€์ž…๋ณ€ํ™˜ ํ•จ
์ˆ˜์— ๋Œ€ํ•œ ์ฃผ์˜๋ฅผ ๋†“์ง€ ๋ง์ž
1. ์•”์‹œ์  ํƒ€์ž…๋ณ€ํ™˜์„ ์ˆ˜ํ–‰ํ•˜๊ธฐ ์œ„ํ•ด, ์ปดํŒŒ์ผ๋Ÿฌ๊ฐ€ ์‚ฌ์šฉ
ํ•˜๋Š” ํ•จ์ˆ˜๋ฅผ ์ œ๊ณตํ•  ๊ฒƒ์ธ๊ฐ€ ๋ง ๊ฒƒ์ธ๊ฐ€์˜ ์—ฌ๋ถ€๋ฅผ ๊ฒฐ
์ •ํ•  ์ˆ˜ ์žˆ๋‹ค
2. ์ปดํŒŒ์ผ๋Ÿฌ๊ฐ€ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ํƒ€์ž…๋ณ€ํ™˜ ํ•จ์ˆ˜๋Š” ๋‹จ์ผ
์ธ์ž ์ƒ์„ฑ์ž์™€ ์•”์‹œ์  ํƒ€์ž…๋ณ€ํ™˜ ์—ฐ์‚ฐ์ž์ด๋‹ค
3. ๋‹จ์ผ ์ธ์ž ์ƒ์„ฑ์ž๋Š” ์ธ์ž๋ฅผ ํ•˜๋‚˜๋งŒ ๋ฐ›์•„์„œ ํ˜ธ์ถœ๋˜๋Š”
์ƒ์„ฑ์ž
4. ์•”์‹œ์  ํƒ€์ž… ์—ฐ์‚ฌ์ž๋Š” ์ผ์ข…์˜ ๋ฉค๋ฒ„ ํ•จ์ˆ˜
explicitํ‚ค์›Œ๋“œ๋ฅผ ํ™œ์šฉํ•˜์ž
1. ์•”์‹œ์  ํƒ€์ž…๋ณ€ํ™˜์˜ ๋ฌธ์ œ๋ฅผ ๋ง‰
๊ธฐ์œ„ํ•ด ๋งŒ๋“ค์–ด ์ง„๊ฒƒ
2. ์‚ฌ์šฉ๋ฒ•๋„ ์ƒ๋‹นํžˆ ๋‹จ์ˆœ
3. ์•ž์— ํ‚ค์›Œ๋“œ๋ฅผ ๋ถ™์—ฌ์ฃผ๋ฉด ๋œ๋‹ค
4. ๋งค๊ฐœ๋ณ€์ˆ˜์™€ ํ˜ธ์ถœ์ด ๋ช…ํ™•ํ•  ๋•Œ
์—๋งŒ ์ด ์ƒ์„ฑ์ž๋ฅผ ํ˜ธ์ถœ
ํ•ญ๋ชฉ 5 ์ •๋ฆฌ
1. explicit๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์•”์‹œ์  ํƒ€์ž…๋ณ€ํ™˜์„ ๋ง‰์„ ์ˆ˜ ์žˆ์Œ
2. explicit๋ฅผ ์ง€์›ํ•˜์ง€ ์•Š๋Š” ์ปดํŒŒ์ผ๋Ÿฌ๋ผ๋ฉด ๋‹จ์ผ ์ธ์ž ์ƒ
์„ฑ์ž๋ฅผ ์‚ฌ์šฉํ•˜์ง€ ์•Š๋Š” ๋‹ค๋ฅธ ๋ฐฉ๋ฒ•์„ ์‚ฌ์šฉํ•ด์•ผ ํ•จ
3. ์ปดํŒŒ์ด๋Ÿฌ๊ฐ€ ์•”์‹œ์  ํƒ€์ž…๋ณ€ํ™˜์„ ํ•˜๋„๋ก ๋‚ด๋ฒ„๋ ค๋‘๋ฉด
๋“๋ณด๋‹ค ์‹ค์ด ๋งŽ์Œ
ํ•ญ๋ชฉ 6 : ์ฆ๊ฐ€ ๋ฐ ๊ฐ์†Œ ์—ฐ์‚ฐ์ž์˜
์ „์œ„/ํ›„์œ„ ํ˜•ํƒœ๋ฅผ ๋ฐ˜๋“œ์‹œ ๊ตฌ๋ถ„ํ•˜
์ž
1. ์ฆ๊ฐ ์—ฐ์‚ฐ์ž์˜ ์ „์œ„ ํ˜•ํƒœ์™€ ํ›„์œ„ ํ˜•ํƒœ๋Š” ์„œ๋กœ ๋‹ค๋ฅธ
ํƒ€์ž…์„ ๋ฐ˜ํ™˜
2. ์ „์œ„ ํ˜•ํƒœ๋Š” ์ฐธ์กฐ์ž ํƒ€์ž…์„ ๋ฐ˜ํ™˜ํ•˜๊ณ , ํ›„์œ„ ํ˜•ํƒœ๋Š”
const ๊ฐ์ฒด ํƒ€์ž…์„ ๋ฐ˜ํ™˜
3. ์ „์œ„ ์—ฐ์‚ฐ์ž๋Š” ๊ฐ’์„ ๋ณ€๊ฒฝ์‹œํ‚ค๊ณ  ๊ฐ’์„ ์‚ฌ์šฉ
4. ํ›„์œ„ ์—ฐ์‚ฐ์ž๋Š” ๊ฐ’์„ ์‚ฌ์šฉํ•˜๊ณ  ๊ฐ’์„ ๋ณ€๊ฒฝ
์ „์œ„, ํ›„์œ„ ์—ฐ์‚ฐ์˜ ์ฐจ์ด
1. C++ ์ŠคํŽ™์— ์ „์œ„/ ํ›„์œ„ ์—ฐ์‚ฐ์ž์˜ ๊ตฌํ˜„์„ ๋ณด๋ฉด ์ „์œ„๋Š” ๊ฐ’
์„ ๋ณ€ํ•œ ๋’ค ๊ฐ’์„ ์‚ฌ์šฉํ•˜๊ณ , ํ›„์œ„๋Š” ๊ฐ’์„ ์‚ฌ์šฉํ•˜๊ณ  ๊ฐ’์„
๋ณ€๊ฒฝ
ํ›„์œ„ ์—ฐ์‚ฐ์€ ์™œ Const๊ฐ€ ์•„๋‹Œ ๊ฐ
์ฒด๋ฅผ ๋ฐ˜ํ™˜ํ•˜๋Š” ๊ฒƒ์„ ๊บผ๋ คํ• ๊นŒ?
1. ๊ธฐ๋ณธ ์ œ๊ณต ํƒ€์ž…์— ๋Œ€ํ•œ ์ฆ๊ฐ€์—ฐ์‚ฐ์ž์˜ ๋™์ž‘๊ณผ ๋งž์ง€
์•Š์Œ
int ๋ฅผ ์˜ˆ๋กœ ๋“ค๋ฉด
int i =1;
i++++;๋กœ ์“ฐ์ง€ ์•Š๋Š”๋‹ค(์—๋Ÿฌ)
2. ์‚ฌ์šฉ์ž๋Š” ์ ˆ๋Œ€๋กœ ์ด๋Ÿฐ ๊ดด์ƒํ•œ ๋™์ž‘์„ ์›ƒ๊ณ  ๋„˜๊ธฐ์ง€
์•Š๋Š”๋‹ค
-> ํ”„๋กœ๊ทธ๋ž˜๋จธ ์ž…์žฅ์—์„œ ์ง๊ด€์ ์ด์ง€ ์•Š๊ณ  ์• ๋งคํ•˜๋‹ค
ํ›„์œ„์—ฐ์‚ฐ๊ณผ ์ „์œ„์—ฐ์‚ฐ์˜ ํšจ์œจ
1. ํ›„์œ„ ์—ฐ์‚ฐ์€ ๋ฐ˜ํ™˜๊ฐ’์œผ๋กœ ์“ฐ๊ธฐ ์œ„ํ•œ ์ž„์‹œ๊ฐ์ฒด๋ฅผ ๋งŒ๋“ค
๊ณ , ์ง€์—ญ ๋ณ€์ˆ˜๋กœ์„œ ์ƒ๊ฒผ๋‹ค๊ฐ€ ์—†์–ด์ง€๋Š” ์ž„์‹œ ๊ฐ์ฒด๋ฅผ
๋งŒ๋“ฆ
2. ์ „์œ„์—ฐ์‚ฐ์ž๋Š” ์ด๋Ÿฐ ์ž„์‹œ ๊ฐ์ฒด๋ฅผ ์‚ฌ์šฉํ•˜์ง€ ์•Š์Œ
->ํ›„์œ„ ์—ฐ์‚ฐ๋ณด๋‹ค ์ „์œ„์—ฐ์‚ฐ์ด ๋” ํšจ์œจ์ 
3. ๋‘ ์—ฐ์‚ฐ์ž๋Š” ๋ฐ˜ํ™˜ํƒ€์ž…์„ ์ œ์™ธํ•˜๋ฉด ํ•˜๋Š” ์ผ์ด ๊ฐ™์Œ
ํ•ญ๋ชฉ 6 ์ •๋ฆฌ
1. ํ•จ์‚ฌ์šฉ์ž ์ •์˜ ํƒ€์ž…์„ ๊ฐ€์ง€๊ณ  ์ž‘์—…ํ•  ๋•Œ์—๋Š” ๋˜๋„๋ก
์ „์œ„ ์—ฐ์‚ฐ์ž๋ฅผ ์‚ฌ์šฉํ•  ๊ฒƒ
2. ์ „์œ„, ํ›„์œ„ ์—ฐ์‚ฐ์ž์— ๋”ฐ๋ผ์„œ ๋ฐ˜ํ™˜ํƒ€์ž…์ด ์–ด๋–ป๊ฒŒ ๋˜
๋Š”์ง€ ์•Œ์•„์•ผ ํ•จ
ํ•ญ๋ชฉ 7 : && , || ํ˜น์€ , ์—ฐ์‚ฐ์ž๋Š”
์˜ค๋ฒ„๋กœ๋”ฉ ๋Œ€์ƒ์ด ์ ˆ๋Œ€๋กœ ์•„๋‹ˆ๋‹ค
1. C์™€ C++์€ ๋ณตํ•ฉ์ ์ธ ๋ถˆ๋ฆฐ ํ‘œํ˜„์‹์„ ํ‰๊ฐ€ํ•  ๋•Œ ๋‹จ์ถ•
ํ‰๊ฐ€ ์ฒ˜๋ฆฌ๋ฅผ ํ•  ์ˆ˜ ์žˆ์Œ, ํ‘œํ˜„์‹์˜ ์ผ๋ถ€๊ฐ€ ์ฐธ ํ˜น์€ ๊ฑฐ
์ง“์ด๋ž€ ๊ฒƒ์ด ํŒ๋ช…๋˜๋ฉด, ๊ทธ ์ดํ›„์˜ ํ‘œํ˜„์‹์€ ์Šคํ‚ต
char * p;
if( (p != 0) && (strlen(p) >10 ) โ€ฆ )
์—์„œ p๊ฐ€ ๋„ ํฌ์ธํ„ฐ์ด๋ฉด strlen์€ ํ˜ธ์ถœํ•˜์ง€ ์•Š๊ณ  ์ข…
๋ฃŒ
_________________________________________
_
if( (index < lowerBound) || (index > upperBound ))
์—์„œ index < lowerBound dใ…ฃ๋ฉด ๋’ค์— ์กฐ๊ฑด์‹์€ ์Šคํ‚ต
&& ์—ฐ์‚ฐ์ž
1. &&์„ ์‚ฌ์šฉ์ž๊ฐ€ ์ž„์˜๋กœ ๋ณ€๊ฒฝ ๊ฐ€๋Šฅ
2. &&์„ ๋ณ€๊ฒฝํ•œ๋‹ค๋Š” ๊ฒƒ์€ ์ปดํŒŒ์ผ๋Ÿฌ๊ฐ€ ๋‹ค์Œ๊ณผ ๊ฐ™์ด ํ•ด์„ํ•˜๊ฒŒ ํ•œ๋‹ค๋Š” ๊ฒƒ
3. ํ•จ์ˆ˜ ํ˜ธ์ถœ์ด ์ด๋ฃจ์–ด ์งˆ ๋•Œ ๋ชจ๋“  ๋งค๊ฐœ๋ณ€์ˆ˜๋ฅผ ํ‰๊ฐ€
4. ํ‰๊ฐ€ ์ˆœ์„œ๋ฅผ ๋ช…ํ™•ํ•˜๊ฒŒ ์•Œ์ง€ ๋ชปํ•ด ์–ด๋–ค ๊ฒƒ์„ ๋จผ์ € ์ฒ˜๋ฆฌํ•  ๊ฒƒ์ธ์ง€ ์•Œ ์ˆ˜
์—†์Œ
(๋‹จ์ถ•ํ‰๊ฐ€๋Š” ์™ผ์ชฝ์—์„œ ์˜ค๋ฅธ์ชฝ์œผ๋กœ ํ‘œํ˜„์‹ ํ‰๊ฐ€)
|| ์—ฐ์‚ฐ์ž๋„ ๋งˆ์ฐฌ๊ฐ€์ง€์ด๋‹ค!
&&, ||๋ฅผ ์˜ค๋ฒ„๋กœ๋”ฉ ํ•œ๋‹ค๋Š” ๊ฒƒ์€ ๋‹จ์ถ•ํ‰๊ฐ€์— ๋ฌธ์ œ๊ฐ€ ์ƒ๊ธธ ์ˆ˜ ์žˆ์Œ!
, ์—ฐ์‚ฐ์ž
1. ์‰ผํ‘œ ์—ฐ์‚ฐ์ž๋Š” ์‰ผํ‘œ์˜ ์™ผ์ชฝ์— ์žˆ๋Š” ํ‘œํ˜„์‹์„ ๋จผ์ € ํ‰๊ฐ€
ํ•˜๊ณ , ๊ทธ ๋‹ค์Œ์— ์˜ค๋ฅธ์ชฝ์— ์žˆ๋Š” ํ‘œํ˜„์‹์„ ํ‰๊ฐ€ํ•˜๋ฉด์„œ ์ง„
ํ–‰
๋„ ์˜ค๋ฒ„๋กœ๋”ฉ์ด ๊ฐ€๋Šฅ ํ•˜๋‹ค, ํ•˜์ง€๋งŒ ์˜ค๋ฒ„๋ฆฌ๋“ฑ์„ ํ•˜๋ฉด ์›๋ž˜์˜ ๋™์ž‘๊ณผ
ํ•ญ๋ชฉ 7 ์ •๋ฆฌ
1. && ์™€ || ๊ทธ๋ฆฌ๊ณ  , ์—ฐ์‚ฐ์ž๋Š” ํ•จ๋ถ€๋กœ ์˜ค๋ฒ„๋กœ๋”ฉ ํ•˜๋ฉด ์•ˆ
๋œ๋‹ค
-> ๋‹จ์ถ•ํ‰๊ฐ€ ์ˆœ์„œ ๋ฐ ๋™์ž‘๋ฐฉ์‹์— ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ•  ์ˆ˜
์žˆ์Œ
2. ์˜ค๋ฒ„๋กœ๋”ฉ์ด ๊ฐ€๋Šฅํ•œ ์—ฐ์‚ฐ์ž๋ผ๋„ ์—ฐ์‚ฐ์ž ์˜ค๋ฒ„๋กœ๋”ฉ์˜
๋ชฉ์ ์„ ์ดํ•ดํ•˜๊ณ  ์จ์•ผ ํ•จ
ํ•ญ๋ชฉ 8 : new ์™€ delete์˜ ์˜๋ฏธ๋ฅผ
์ •ํ™•ํžˆ ๊ตฌ๋ถ„ํ•˜๊ณ  ์ดํ•ดํ•˜์ž
1. string *ps = new string(โ€œmemory Managementโ€);
new์—ฐ์‚ฐ์ž์˜ ๋™์ž‘์€ 2๋‹จ๊ณ„
์š”์ฒญํ•œ ํƒ€์ž…์˜ ๊ฐ์ฒด๋ฅผ ๋‹ด์„ ์ˆ˜ ์žˆ๋Š” ํฌ๊ธฐ์˜ ๋ฉ”๋ชจ๋ฆฌ ํ• 
๋‹น
ํ• ๋‹น๋œ ๋ฉ”๋ชจ๋ฆฌ์— ๊ฐ์ฒด ์ดˆ๊ธฐํ™”๋ฅผ ์ˆ˜ํ–‰
2. operator new ํ•จ์ˆ˜๋Š”
void * operator new(size_t size);
์ด ํ•จ์ˆ˜์˜ ๋ฐ˜ํ™˜ ํƒ€์ž…์€ void*์ด๋‹ค.
new ์—ฐ์‚ฐ์ž๊ฐ€ ํ•˜๋Š” ์ผ
1. new์—ฐ์ž์—์„œ ์ƒ์„ฑ์ž ํ˜ธ์ถœ ๋‹จ๊ณ„๋Š” ํ”„๋กœ๊ทธ๋ž˜๋จธ๊ฐ€ ์†๋Œˆ ์ˆ˜
์—†์Œ, ์ปดํŒŒ์ผ๋Ÿฌ๋งŒ์ด ๊ฐ€๋Šฅ
๋ฉ”๋ชจ๋ฆฌ ์ง€์ • new
1. ํ• ๋‹น๋ฐ›์€ ๋ฏธ์ดˆ๊ธฐํ™” ๋ฉ”๋ชจ๋ฆฌ๊ฐ€ ์žˆ๊ณ , ๊ฐ์ฒด ํ˜•ํƒœ๋กœ ๋งŒ๋“ค๊ณ 
์‹ถ์„ ๋•Œ ์“ฐ๋Š” ๋ฐฉ๋ฒ•
๊ฐ์ฒด๋ฅผ buffer๋กœ ์ง€์ •๋˜๋Š” ๋ฉ”๋ชจ๋ฆฌ์— ์ƒ์„ฑํ•œ ํ›„์— ๊ทธ ํฌ์ธํ„ฐ๋ฅผ ๋ฐ˜ํ™˜
๊ฐ์ฒด ์‚ญ์ฒด์™€ ๋ฉ”๋ชจ๋ฆฌ ํ•ด์ œ
1. ๋ฉ”๋ชจ๋ฆฌ ๋ˆ„์ˆ˜๋ฅผ ๋ง‰๊ธฐ ์œ„ํ•ด, ํ• ๋‹นํ•œ ๋ฉ”๋ชจ๋ฆฌ๋Š” ๋ฐ˜๋“œ์‹œ ํ•ด์ œ
2. ๊ธฐ๋ณธ์ ์œผ๋กœ delete ์—ฐ์‚ฐ์ž๋ฅผ ์‚ฌ์šฉ
3. operator delete ํ•จ์ˆ˜ ์ด์šฉ
๊ฐ์ฒด์˜ ๋ฐฐ์—ด ๋ฉ”๋ชจ๋ฆฌ ํ•ด์ œ
1. ๋‹จ์ผ ๊ฐ์ฒด ํ•ด์ œ์™€ ๋‹ฌ๋ฆฌ ๊ฐ์ฒด ๋ฐฐ์—ด์˜ ํ•ด์ œ๋Š” operator
new[]๋ฅผ ํ˜ธ์ถœ
ํ•ญ๋ชฉ 8 ์ •๋ฆฌ
1. new์™€ delete ์—ฐ์‚ฐ์ž๋Š” C++์—์„œ ๊ธฐ๋ณธ์ ์œผ๋กœ ์ œ๊ณต๋˜
๋Š” ํ•จ์ˆ˜
2. ์ด ์—ฐ์‚ฐ์ž๊ฐ€ ๋‚ด๋ถ€์ ์œผ๋กœ ์‚ฌ์šฉํ•˜๋Š” ๋ฉ”๋ชจ๋ฆฌ ํ• ๋‹น ํ•จ์ˆ˜
๋ฐ ํ•ด์ œ ํ•จ์ˆ˜๋Š” ์ˆ˜์ • ๊ฐ€๋Šฅ
3. ํ•˜์ง€๋งŒ ์ด ์—ฐ์‚ฐ์ž์˜ ๋™์ž‘์„ ์ˆ˜์ •ํ•˜๋Š” ๊ฒƒ์€ ๋งŽ์€ ์œ„ํ—˜
๊ฐ์ˆ˜ -> ์–ด์ฐจํ”ผ ํ•˜๋Š” ์ผ์€ C++์–ธ์–ด์—์„œ ๊ณ ์ •๋˜์–ด ์žˆ
์Œ

More effective c++ Chap1~2

  • 1.
    More Effective C++์ •๋ฆฌ 131054 ์ด์ธ์žฌ
  • 2.
    ํ•ญ๋ชฉ 1 :ํฌ์ธํ„ฐ์™€ ์ฐธ์กฐ์ž๋ฅผ ๊ตฌ๋ถ„ ํ•˜์ž 1. ํฌ์ธํ„ฐ๋Š” โ€œ*โ€ ์™€ โ€œ->โ€์—ฐ์‚ฐ์ž ์‚ฌ์šฉ 2. ์ฐธ์กฐ์ž๋Š” โ€œ.โ€์„ ์‚ฌ์šฉ 3. ์–ด๋–ค ๊ฐ์ฒด๋ฅผ ์ฐธ์กฐํ•˜๋Š” ๋ถ€๋ถ„์— ๊ผญ ๊ฐ์ฒด๊ฐ€ ์žˆ์ง€ ์•Š์„ ๊ฒฝ์šฐ๋„ ์žˆ๋‹ค๋ฉด? ํฌ์ธํ„ฐ๋ฅผ ์จ์•ผํ•œ๋‹ค 4. ๋ฐ˜๋Œ€๋กœ ๊ฐ์ฒด๊ฐ€ ๋ฐ˜๋“œ์‹œ ์žˆ๋‹ค๊ณ  ํ™•์‹ ํ•  ์ˆ˜ ์žˆ๋‹ค๋ฉด? ์ฐธ ์กฐ์ž๋ฅผ ์จ์•ผํ•œ๋‹ค.
  • 3.
    ์ฐธ์กฐ์ž 1. ์ฐธ์กฐ์ž์— NULL๊ฐ’์„ ์–ต์ง€๋กœ ๋„ฃ๋Š” ์ฝ”๋“œ๋Š” ๋ฌด์‹œ!( ํ•ด์„œ๋Š” ์ ˆ๋Œ€ ์•ˆ๋จ)
  • 4.
    ์ฐธ์กฐ์ž 1. ์ฐธ์กฐ์ž๋Š” ๋ฐ˜๋“œ์‹œ์„ ์–ธ๊ณผ ๋™์‹œ์— ์ดˆ๊ธฐํ™” ํ•„์š”
  • 5.
    ํฌ์ธํ„ฐ 1. ํฌ์ธํ„ฐ๋Š” NULL๊ฐ์ฒด๊ฐ€์˜ฌ ์ˆ˜ ์žˆ๊ณ , ์„ ์–ธ๊ณผ ๋™์‹œ์— ์ดˆ๊ธฐ ํ™” ํ•  ํ•„์š”๊ฐ€ ์—†๋‹ค. 2. ํฌ์ธํ„ฐ๋Š” NULL๊ฐ’์„ ํ•ญ์ƒ ์ฒดํฌํ•ด์•ผ ํ•œ๋‹ค
  • 6.
    ์ฐธ์กฐ์ž์™€ ํฌ์ธํ„ฐ์˜ ์ฐจ์ด 1.์ฐธ์กฐ์ž๋Š” ๊ฐ€๋ฆฌํ‚ค๋Š” ๋Œ€์ƒ์„ ๋ฐ”๊ฟ€ ์ˆ˜ ์—†๋‹ค. 2. ์ฒ˜์Œ ์ดˆ๊ธฐํ™” ํ•œ ๋Œ€์ƒ๋งŒ์„ ๊ณ„์† ์ฐธ์กฐ
  • 7.
    ์ฐธ์กฐ์ž์™€ ํฌ์ธํ„ฐ์˜ ์ฐจ์ด 1.ํฌ์ธํ„ฐ๋Š” ๊ฐ€๋ฆฌํ‚ค๋Š” ๋Œ€์ƒ์„ ๋ณ€๊ฒฝํ•  ์ˆ˜ ์žˆ๋‹ค
  • 8.
    ํฌ์ธํ„ฐ์™€ ์ฐธ์กฐ์ž๋Š” ์–ด๋””์—? 1.ํฌ์ธํ„ฐ๋ฅผ ์จ์•ผ ํ•˜๋Š” ๊ฒฝ์šฐ๋Š” ๊ฐ€๋ฆฌํ‚ฌ ๊ฐ์ฒด์˜ ์ฃผ์†Œ๊ฐ€ ์—†์„ ์ˆ˜๋„ ์žˆ์„ ๋•Œ 2. ํ•˜๋‚˜์˜ ๋ณ€์ˆ˜๋ฅผ ๊ฐ€์ง€๊ณ  ์—ฌ๋Ÿฌ ๊ฐœ์˜ ๊ฐ์ฒด๋ฅผ ๋ฐ”๊พธ์–ด ์ฐธ ์กฐํ•ด์•ผ ํ•  ๋•Œ( ํฌ์ธํ„ฐ์—๋Š” ์ฃผ์†Œ๊ฐ’์„ ๋ฐ”๊พธ์–ด ๋Œ€์ž…ํ•˜ ๋ฉด ๋œ๋‹ค) 3. ์ฐธ์กฐ์ž๋Š” ์ฐธ์กฐํ•  ํฌ์ธํ„ฐ๊ฐ€ ์ฒ˜์Œ๋ถ€ํ„ฐ ๋๊นŒ์ง€ ์กด์žฌํ•˜ ๊ณ , ์ฐธ์กฐํ•˜๋Š” ๋Œ€์ƒ ๊ฐ์ฒด๋ฅผ ๋ฐ”๊ฟ€ ํ•„์š”๊ฐ€ ์—†์„ ๋•Œ
  • 9.
    ๋ฐ˜๋“œ์‹œ ์ฐธ์กฐ์ž๋ฅผ ์จ์•ผํ•˜๋Š”๊ฒฝ์šฐ 1. ์—ฐ์‚ฐ์ž ํ•จ์ˆ˜๋ฅผ ๊ตฌํ˜„ํ•  ๋•Œ 2. Operator[]์ด ๊ฐ€์žฅ ํ”ํ•œ ์˜ˆ์‹œ, ์ด ์—ฐ์‚ฐ์ž๋Š” ๋Œ€์ž… ์—ฐ์‚ฐ ์ž์˜ ์ขŒ๋ณ€์œผ๋กœ ์“ธ ์ˆ˜ ์žˆ๋Š” ๊ฐ’์„ ๋ฐ˜ํ™˜ํ•ด ์ฃผ๋„๋ก ๋งŒ๋“œ ๋Š” ๊ฒƒ์ด ๋ณดํ†ต
  • 10.
    ํ•ญ๋ชฉ 1 ์ •๋ฆฌ 1.์ฐธ์กฐํ•˜๊ณ ์žํ•˜๋Š” ์–ด๋–ค ๊ฐ์ฒด๋ฅผ ๋ฏธ๋ฆฌ ์•Œ๊ณ ์žˆ๊ณ , ์ด ๊ฐ ์ฒด๋ฅผ ๋‹ค๋ฅธ ๊ฐ์ฒด๋กœ ๋ฐ”๊ฟ€ ์ผ๋„ ์—†๊ณ , ๋„ ๊ฐ’๋„ ๋˜์ง€์•Š๋Š” ๋‹ค๋Š” ๋ณด์žฅ์ด ์žˆ์„๋•Œ๋Š”? -> ์ฐธ์กฐ์ž 2. ๊ทธ ์ด์™ธ์—๋Š” ๋ฌด์กฐ๊ฑด ํฌ์ธํ„ฐ
  • 11.
    ํ•ญ๋ชฉ 2 :๊ฐ€๋Šฅํ•œ C++ ์Šคํƒ€์ผ์˜ ์บ ์ŠคํŠธ๋ฅผ ์ฆ๊ฒจ ์“ฐ์ž 1. go to ๋ฌธ๊ณผ ํ•จ๊ป˜ ๊ฐ€์žฅ ๊ธฐํ”ผํ•ด์•ผํ•  ํ‚ค์›Œ๋“œ๊ฐ€ โ€œ์บ์ŠคํŠธโ€ 2. C์Šคํƒ€์ผ์˜ ์บ์ŠคํŠธ๋Š” ์–ด๋–ค ํƒ€์ž…์„ ๋‹ค๋ฅธ ํƒ€์ž…์œผ๋กœ ์•„๋ฌด ์ƒ ๊ฐ ์—†์ด ๋ฐ”๊พธ์–ด์คŒ -> ์œ„ํ—˜ 3. C์Šคํƒ€์ผ์˜ ์บ์ŠคํŠธ๋ฅผ ์จ์„œ ๋ฌธ์ œ๊ฐ€ ์ƒ๊ธธ๊ฒฝ์šฐ ํ”„๋กœ๊ทธ๋ž˜๋จธ ์ž…์žฅ์—์„œ ๋ฐœ๊ฒฌํ•˜๊ธฐ๊ฐ€ ํž˜๋“ค๋‹ค 4. C++์Šคํƒ€์ผ์˜ ํƒ€์ž… ์บ์ŠคํŒ…์€ (C++ static_cast์˜ˆ์‹œ) (ํƒ€์ž…) ํ‘œํ˜„์‹ ์ด ์•„๋‹ˆ๋ผ static_cast<ํƒ€์ž…>(ํ‘œํ˜„์‹) ์œผ๋กœ ์“ด๋‹ค. -> C++์Šคํƒ€์ผ์˜ ์บ์ŠคํŠธ๊ฐ€ ๋”์šฑ ์ž˜ ๋ˆˆ์— ๋ˆ๋‹ค.
  • 12.
  • 13.
  • 14.
    const_cast 1. ์ƒ์ˆ˜์„ฑ์ด๋‚˜ ํœ˜๋ฐœ์„ฑ์„์ œ๊ฑฐํ•˜๋Š”๋ฐ ์“ฐ์ด๋Š” ์บ์ŠคํŒ…
  • 15.
    const_cast๋Š” ์–ธ์ œ ์“ฐ์ด๋‚˜? 1.const_cast๋ฅผ ์จ์„œ ์ƒ์ˆ˜์„ฑ์„ ์ œ๊ฑฐ ๊ฐ€๋Šฅ
  • 16.
    dynamic_cast 1. ์ƒ์† ๊ณ„์ธต๊ด€๊ณ„๋ฅผ ๊ฐ€๋กœ์ง€๋ฅด๊ฑฐ๋‚˜ ํ•˜ํ–ฅ์‹œํ‚จ ํด๋ž˜์Šคํƒ€์ž… ์บ์ŠคํŒ… 2. ๊ธฐ๋ณธํด๋ž˜์Šค์˜ ๊ฐ์ฒด์— ๋Œ€ํ•œ ํฌ์ธํ„ฐ๋‚˜ ์ฐธ์กฐ์ž์˜ ํƒ€์ž…์„ ํŒŒ์ƒ ํด๋ž˜์Šค, ํ˜น์€ ํ˜•์žฌ ํด๋ž˜์Šค์˜ ํƒ€์ž…์œผ๋กœ ๋ณ€ํ™˜ํ•ด ์คŒ 3. ์บ์ŠคํŒ… ์‹คํŒจ์‹œ NULL๊ฐ’ ๋ฆฌํ„ด
  • 17.
    dynamic_cast๋Š” ์–ธ์ œ ์“ฐ์ด๋‚˜ ? 1.Animal ํฌ์ธํ„ฐ๋ฅผ Catํฌ์ธํ„ฐ ํƒ€์ž…์œผ๋กœ ๋‹ค์šด์บ์ŠคํŒ… ํ•ด์ค€ ๋‹ค
  • 18.
    ๋‹ค์šด ์บ์ŠคํŒ…์˜ ์ œ์•ฝ์กฐ๊ฑด 1. ์ƒ์† ๊ณ„์ธต ๊ตฌ์กฐ๋ฅผ ์˜ค๊ฐˆ ๋•Œ์—๋งŒ ์‚ฌ์šฉํ•ด์•ผ ํ•จ 2. ๊ฐ€์ƒ ํ•จ์ˆ˜๊ฐ€ ์—†๋Š” ํƒ€์ž…์—๋Š” ์ ์šฉํ•  ์ˆ˜ ์—† ์Œ 3. ์ƒ์ˆ˜์„ฑ ์ œ๊ฑฐ์— ์“ธ ์ˆ˜ ์—†์Œ
  • 19.
    reinterpret_cast 1. ๊ฐ€์žฅ ํ”ํ•œ์šฉ๋„๋Š” ํ•จ์ˆ˜ ํฌ์ธํ„ฐ ํƒ€์ž…์„ ์„œ๋กœ ๋ฐ”๊พธ๋Š” ๊ฒƒ 2. ์ด ์—ฐ์‚ฐ์ž๊ฐ€ ์ ์šฉ๋œ ํ›„์˜ ๋ณ€ํ™˜ ๊ฒฐ๊ณผ๋Š” ๊ฑฐ์˜ ํ•ญ์ƒ ์ปดํŒŒ์ผ ๋Ÿฌ์— ๋”ฐ๋ผ ๋‹ค๋ฅด๊ฒŒ ์ •์˜
  • 20.
    ์ฃผ์˜์  1. ํ•จ์ˆ˜ ํฌ์ธํ„ฐ์˜์บ์ŠคํŒ…์€ ์†Œ์Šค์˜ ์ด์‹์„ฑ ์„ ๋–จ์–ด๋œจ๋ฆผ 2. ์ด๋Ÿฐ ์บ์ŠคํŒ…์€ ์ž˜๋ชป๋œ ๊ฒฐ๊ณผ๋ฅผ ๋‚ผ ์ˆ˜๋„ ์žˆ ์Œ
  • 21.
    ํ•ญ๋ชฉ2 ์ •๋ฆฌ 1. C++์Šคํƒ€์ผ์ดC์Šคํƒ€์ผ์˜ ์บ์ŠคํŠธ๋ณด๋‹ค ๋” ๋ณด๊ธฐ์— ์ข‹๊ณ , ์ฝ์–ด๋‚ด๊ธฐ์—๋„ ์‰ฝ๋‹ค 2. ๋‹ค๋ฅธ ํ”„๋กœ๊ทธ๋ž˜๋จธ์—๊ฒŒ ํ™•์‹คํ•œ ์˜๋ฏธ์™€ ์ธ ์‹์„ฑ์„ ์„ ์‚ฌํ•  ์ˆ˜ ์žˆ์Œ 3. ์•„๋ฌด๋ฆฌ C++์Šคํƒ€์ผ์˜ ์บ์ŠคํŠธ๋ผ๊ณ  ํ•ด๋„ ์ตœ๋Œ€ํ•œ ํ”ผํ•ด์•ผ ํ•˜๋Š” ๊ฒƒ์ด ๊ถŒ์žฅ์‚ฌํ•ญ
  • 22.
    ํ•ญ๋ชฉ 3 :๋ฐฐ์—ด๊ณผ ๋‹คํ˜•์„ฑ์€ ๊ฐ™์€ ์ˆ˜ ์ค€์œผ๋กœ ๋†“๊ณ  ๋ณผ ๊ฒƒ์ด ์•„๋‹ˆ๋‹ค 1. ์ƒ์†์„ฑ์ด ์ฃผ๋Š” ๊ฐ€์žฅ ์ค‘์š”ํ•œ ํ˜œํƒ ์ค‘ ํ•˜๋‚˜๋Š”, ๊ธฐ๋ณธ ํด ๋ž˜์Šค ๊ฐ์ฒด์˜ ํฌ์ธํ„ฐ๋‚˜ ์ฐธ์กฐ์ž๋ฅผ ํ†ตํ•ด ํŒŒ์ƒ ํด๋ž˜์Šค ๊ฐ์ฒด๋ฅผ ์กฐ์ž‘ํ•  ์ˆ˜ ์žˆ๋‹ค๋Š” ์  2. ์ด๋ ‡๊ฒŒ ์“ฐ์ด๋Š” ํฌ์ธํ„ฐ๋‚˜ ์ฐธ์กฐ์ž๋ฅผ ๊ฐ€๋ฆฌ์ผœ โ€œ ๋‹คํ˜•์„ฑ ์„ ๊ฐ€์ง€๊ณ  ์žˆ๋‹คโ€๋ผ๊ณ  ๋งํ•จ 3. ํŒŒ์ƒ ํด๋ž˜์Šค ๊ฐ์ฒด์˜ ๋ฐฐ์—ด์„ ๊ธฐ๋ณธ ํด๋ž˜์Šค ํฌ์ธํ„ฐ๋‚˜ ์ฐธ์กฐ์ž๋ฅผ ํ†ตํ•ด ์กฐ์ž‘ํ•˜๋Š” ๊ฒƒ๋„ ๋จ
  • 23.
    ๋‹คํ˜•์„ฑ๊ณผ ํฌ์ธํ„ฐ ์‚ฐ์ˆ ์—ฐ์‚ฐ์€ ๊ฐ„๋‹จํžˆ ์„ž์ด์ง€ ์•Š์Œ 1. ๋ฐฐ์—ด์ด ์‚ญ์ œ๋  ๋•Œ, ๋ฐฐ์—ด์˜ ๊ฐ ์š”์†Œ ๊ฐ์ฒด์— ๋Œ€ํ•ด ์†Œ๋ฉธ์ž๊ฐ€ ํ˜ธ์ถœ 2. ๊ธฐ๋ณธ ํด๋ž˜์Šค ํฌ์ธํ„ฐ๋ฅผ ํ†ตํ•ด ํŒŒ์ƒ ํด๋ž˜์Šค ๊ฐ์ฒด์˜ ๋ฐฐ์—ด์„ ์‚ญ์ œํ•œ ๊ฒฐ๊ณผ๋Š” โ€œ์ •์˜๋˜์ง€ ์•Š์Œโ€ 3. ์–ด๋–ค ๊ตฌ์ฒด ํด๋ž˜์Šค๋ถ€ํ„ฐ ๋˜ ๋‹ค๋ฅธ ๊ตฌ์ฒด ํด๋ž˜์Šค๋ฅผ ํŒŒ์ƒ์‹œํ‚ค๋Š” ์ผ๋งŒ ์—†์œผ๋ฉด, ๊ฐ์ฒด์˜ ๋ฐฐ์—ด์„ ๋‹คํ˜•์ ์œผ๋กœ ์กฐ์ž‘ํ•˜๋Š” ์‹ค์ˆ˜๋Š” ๋ณ„๋กœ ํ•˜์ง€ ์•Š๋Š”๋‹ค
  • 24.
    ํ•ญ๋ชฉ3 ์ •๋ฆฌ 1. ๊ธฐ๋ณธํด๋ž˜์Šค ํฌ์ธํ„ฐ๋ฅผ ํ†ตํ•ด ํŒŒ์ƒ ํด๋ž˜์Šค ๊ฐ์ฒด์˜ ๋ฐฐ์—ด์„ ์‚ญ์ œํ•œ ๊ฒฐ๊ณผ๋Š” โ€œ์ •์˜๋˜์ง€ ์•Š์•˜๋‹คโ€ 2. ๋‹คํ˜•์„ฑ๊ณผ ์‚ฐ์ˆ  ์—ฐ์‚ฐ์€ ๊ฐ„๋‹จํžˆ ์„ž์ด๋Š” ๊ฒƒ ์ด ์•„๋‹˜ 3. ๋ฐฐ์—ด๊ณผ ๋‹คํ˜•์„ฑ์€ ๋ฌผ๊ณผ ๊ธฐ๋ฆ„์˜ ๊ด€๊ณ„
  • 25.
    ํ•ญ๋ชฉ 4 :์“ธ๋ฐ ์—†๋Š” ๊ธฐ๋ณธ ์ƒ์„ฑ์ž๋Š” ๊ทธ๋ƒฅ ๋‘์ง€ ๋ง์ž 1. ์ƒ์„ฑ์ž๋Š” ๊ฐ์ฒด๋ฅผ ์ดˆ๊ธฐํ™”ํ•˜๋Š” ์—ญํ•  2. ์กฐ์‹ฌํ•ด์•ผํ•  ์ ์€ ์–ด๋–ค ๊ฐ์ฒด์˜ ๊ฒฝ์šฐ ์™ธ๋ถ€ ์ •๋ณด ์—†์ด ๋Š” ์™„์ „ํ•œ ์ดˆ๊ธฐํ™”๋ฅผ ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์—†๋Š” ๊ฒฝ์šฐ๊ฐ€ ์žˆ์Œ -> ํด๋ž˜์Šค ์„ค๊ณ„์— ๋”ฐ๋ผ ์‚ฌ์›ํด๋ž˜์Šค์— โ€˜์‚ฌ์›๋ฒˆํ˜ธโ€™๊ฐ€ ์—†๋‹ค ๋“ ์ง€ ์ด๋Ÿฐ ์ •๋ณด๋“ค์ด ์—†์œผ๋ฉด ์ดˆ๊ธฐํ™”ํ•  ์ˆ˜ ์—†์Œ
  • 26.
    ๊ธฐ๋ณธ ์ƒ์„ฑ์ž๊ฐ€ ์—†์„๋•Œ๋ฌธ์ œ์  1 1. ๊ธฐ๋ณธ ์ƒ์„ฑ์ž๊ฐ€ ์—†์œผ๋ฉด ๋ฐฐ์—ด์„ ์ƒ์„ฑํ•  ๋•Œ , ๋ฐฐ์—ด์˜ ์š”์†Œ ๋กœ ๋“ค์–ด๊ฐ€๋Š” ๊ฐ์ฒด์— ๋Œ€ํ•ด ์ƒ์„ฑ์ž ๋งค๊ฐœ๋ณ€์ˆ˜๋ฅผ ์ง€์ •ํ•  ์ˆ˜ ์—†๊ธฐ๋•Œ๋ฌธ์— ๋ฐฐ์—ด ์ƒ์„ฑ ๋ถˆ๊ฐ€๋Šฅ
  • 27.
    ์ƒ์„ฑ์ž ๋งค๊ฐœ๋ณ€์ˆ˜๋ฅผ ์ž…๋ ฅํ•˜์—ฌํ•ด ๊ฒฐ 1. ์ƒ์„ฑ์ž ๋งค๊ฐœ๋ณ€์ˆ˜๋ฅผ ์ง์ ‘ ์ž…๋ ฅ
  • 28.
    ํฌ์ธํ„ฐ ๋ฐฐ์—ด์„ ์ด์šฉํ•˜์—ฌํ•ด๊ฒฐ 1. ํฌ์ธํ„ฐ์˜ ๋ฐฐ์—ด์„ ๋งŒ๋“ค์–ด ๊ฐ๊ฐ์ด ํ•˜๋‚˜์˜ ๊ฐ์ฒด๋ฅผ ๊ฐ€๋ฆฌํ‚ค ๋„๋ก ๋งŒ๋“ค์–ด์คŒ
  • 29.
    ํฌ์ธํ„ฐ ๋ฐฐ์—ด ์‚ฌ์šฉ์˜๋ฌธ์ œ์  1. ๋ฐฐ์—ด ๋‚ด์˜ ๋ชจ๋“  ํฌ์ธํ„ฐ๊ฐ€ ๊ฐ€๋ฆฌํ‚ค๋Š” ๊ฐ์ฒด๋ฅผ ์‚ญ์ œํ•ด์•ผ ํ•จ -> ๊ทธ๋ ‡์ง€ ์•Š์œผ๋ฉด ๋ฉ”๋ชจ๋ฆฌ ๋ˆ„์ˆ˜ 2. ํ•„์š”ํ•œ ๋ฉ”๋ชจ๋ฆฌ ์‚ฌ์šฉ๋Ÿ‰์ด ๋Š˜์–ด๋‚จ -> ๊ฐ์ฒด๋ฅผ ๋‹ด์„ ๋ฉ”๋ชจ๋ฆฌ ๊ณต๊ฐ„ ์ด์™ธ์— ํฌ์ธํ„ฐ๋ฅผ ๋‹ด์„ ๊ณต๊ฐ„ ๋˜ํ•œ ํ•„์š”
  • 30.
    ๊ธฐ๋ณธ ์ƒ์„ฑ์ž๊ฐ€ ์—†์„๋•Œ๋ฌธ์ œ์  21. ํ…œํ”Œ๋ฆฟ ๊ธฐ๋ฐ˜์˜ ์ปจํ…Œ์ด๋„ˆ ํด๋ž˜์Šค์™€ ์—ฐ๊ณ„ํ•  ์ˆ˜ ์—†๋‹ค 2. ์ปจํ…Œ์ด๋„ˆ ํด๋ž˜์Šค๋ฅผ ์ธ์Šคํ„ด์Šคํ™”ํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” ํ…œํ”Œ๋ฆฟ ๋งค๊ฐœ๋ณ€ ์ˆ˜๋กœ ๋“ค์–ด๊ฐ€๋Š” ํƒ€์ž…์ด ๊ธฐ๋ณธ ์ƒ์„ฑ์ž๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ์–ด์•ผ ํ•˜๊ธฐ ๋•Œ ๋ฌธ. 3. -> ๊ธฐ๋ณธ ์ƒ์„ฑ์ž๊ฐ€ ์—†๋Š” ํด๋ž˜์Šค๋ฅผ ํ…œํ”Œ๋ฆฟ ๋งค๊ฐœ๋ณ€์ˆ˜๋กœ ์“ธ ์ˆ˜ ์—† ์Œ!
  • 31.
    ํ•ญ๋ชฉ 4 ์ •๋ฆฌ 1.์“ธ ๋ฐ ์—†๋Š” ๊ธฐ๋ณธ ์ƒ์„ฑ์ž๋Š” ํด๋ž˜์Šค์˜ ํšจ์œจ์— ๊ฑธ๋ฆผ๋Œ -> ๋ฉค๋ฒ„ ํ•จ์ˆ˜๋“ค์€ ํด๋ž˜์Šค์˜ ๋ฉค๋ฒ„๋ฐ์ดํ„ฐ๊ฐ€ ์ œ๋Œ€๋กœ ์ดˆ๊ธฐํ™” ๋˜์—ˆ๋Š”์ง€๋ฅผ ๊ฒ€์‚ฌํ•ด์•ผํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์‹คํ–‰์†๋„ ๋А๋ ค์ง 2. ์ถ”๊ฐ€๋œ ๊ฒ€์‚ฌ ์ฝ”๋“œ์˜ ํฌ๊ธฐ๋งŒํผ ์‹คํ–‰ ํŒŒ์ผ์ด ์ปค์ง 3. ์ด๋ฅผ ๋ง‰๊ธฐ์œ„ํ•ด ์ƒ์„ฑ์ž๊ฐ€ ๊ฐ์ฒด์˜ ๋ฉค๋ฒ„ ๋ฐ์ดํ„ฐ๋ฅผ ํ™•์‹คํžˆ ์ดˆ๊ธฐํ™” ํ•ด์•ผํ•จ 4. ํŠน๋ณ„ํ•œ ์ƒํ™ฉ์ด ์•„๋‹ˆ๋ฉด ๊ธฐ๋ณธ์ƒ์„ฑ์ž๋ฅผ ํ”ผํ•ด์•ผ ํ•จ
  • 32.
    ํ•ญ๋ชฉ 5 :์‚ฌ์šฉ์ž ์ •์˜ ํƒ€์ž…๋ณ€ํ™˜ ํ•จ ์ˆ˜์— ๋Œ€ํ•œ ์ฃผ์˜๋ฅผ ๋†“์ง€ ๋ง์ž 1. ์•”์‹œ์  ํƒ€์ž…๋ณ€ํ™˜์„ ์ˆ˜ํ–‰ํ•˜๊ธฐ ์œ„ํ•ด, ์ปดํŒŒ์ผ๋Ÿฌ๊ฐ€ ์‚ฌ์šฉ ํ•˜๋Š” ํ•จ์ˆ˜๋ฅผ ์ œ๊ณตํ•  ๊ฒƒ์ธ๊ฐ€ ๋ง ๊ฒƒ์ธ๊ฐ€์˜ ์—ฌ๋ถ€๋ฅผ ๊ฒฐ ์ •ํ•  ์ˆ˜ ์žˆ๋‹ค 2. ์ปดํŒŒ์ผ๋Ÿฌ๊ฐ€ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ํƒ€์ž…๋ณ€ํ™˜ ํ•จ์ˆ˜๋Š” ๋‹จ์ผ ์ธ์ž ์ƒ์„ฑ์ž์™€ ์•”์‹œ์  ํƒ€์ž…๋ณ€ํ™˜ ์—ฐ์‚ฐ์ž์ด๋‹ค 3. ๋‹จ์ผ ์ธ์ž ์ƒ์„ฑ์ž๋Š” ์ธ์ž๋ฅผ ํ•˜๋‚˜๋งŒ ๋ฐ›์•„์„œ ํ˜ธ์ถœ๋˜๋Š” ์ƒ์„ฑ์ž 4. ์•”์‹œ์  ํƒ€์ž… ์—ฐ์‚ฌ์ž๋Š” ์ผ์ข…์˜ ๋ฉค๋ฒ„ ํ•จ์ˆ˜
  • 33.
    explicitํ‚ค์›Œ๋“œ๋ฅผ ํ™œ์šฉํ•˜์ž 1. ์•”์‹œ์ ํƒ€์ž…๋ณ€ํ™˜์˜ ๋ฌธ์ œ๋ฅผ ๋ง‰ ๊ธฐ์œ„ํ•ด ๋งŒ๋“ค์–ด ์ง„๊ฒƒ 2. ์‚ฌ์šฉ๋ฒ•๋„ ์ƒ๋‹นํžˆ ๋‹จ์ˆœ 3. ์•ž์— ํ‚ค์›Œ๋“œ๋ฅผ ๋ถ™์—ฌ์ฃผ๋ฉด ๋œ๋‹ค 4. ๋งค๊ฐœ๋ณ€์ˆ˜์™€ ํ˜ธ์ถœ์ด ๋ช…ํ™•ํ•  ๋•Œ ์—๋งŒ ์ด ์ƒ์„ฑ์ž๋ฅผ ํ˜ธ์ถœ
  • 34.
    ํ•ญ๋ชฉ 5 ์ •๋ฆฌ 1.explicit๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์•”์‹œ์  ํƒ€์ž…๋ณ€ํ™˜์„ ๋ง‰์„ ์ˆ˜ ์žˆ์Œ 2. explicit๋ฅผ ์ง€์›ํ•˜์ง€ ์•Š๋Š” ์ปดํŒŒ์ผ๋Ÿฌ๋ผ๋ฉด ๋‹จ์ผ ์ธ์ž ์ƒ ์„ฑ์ž๋ฅผ ์‚ฌ์šฉํ•˜์ง€ ์•Š๋Š” ๋‹ค๋ฅธ ๋ฐฉ๋ฒ•์„ ์‚ฌ์šฉํ•ด์•ผ ํ•จ 3. ์ปดํŒŒ์ด๋Ÿฌ๊ฐ€ ์•”์‹œ์  ํƒ€์ž…๋ณ€ํ™˜์„ ํ•˜๋„๋ก ๋‚ด๋ฒ„๋ ค๋‘๋ฉด ๋“๋ณด๋‹ค ์‹ค์ด ๋งŽ์Œ
  • 35.
    ํ•ญ๋ชฉ 6 :์ฆ๊ฐ€ ๋ฐ ๊ฐ์†Œ ์—ฐ์‚ฐ์ž์˜ ์ „์œ„/ํ›„์œ„ ํ˜•ํƒœ๋ฅผ ๋ฐ˜๋“œ์‹œ ๊ตฌ๋ถ„ํ•˜ ์ž 1. ์ฆ๊ฐ ์—ฐ์‚ฐ์ž์˜ ์ „์œ„ ํ˜•ํƒœ์™€ ํ›„์œ„ ํ˜•ํƒœ๋Š” ์„œ๋กœ ๋‹ค๋ฅธ ํƒ€์ž…์„ ๋ฐ˜ํ™˜ 2. ์ „์œ„ ํ˜•ํƒœ๋Š” ์ฐธ์กฐ์ž ํƒ€์ž…์„ ๋ฐ˜ํ™˜ํ•˜๊ณ , ํ›„์œ„ ํ˜•ํƒœ๋Š” const ๊ฐ์ฒด ํƒ€์ž…์„ ๋ฐ˜ํ™˜ 3. ์ „์œ„ ์—ฐ์‚ฐ์ž๋Š” ๊ฐ’์„ ๋ณ€๊ฒฝ์‹œํ‚ค๊ณ  ๊ฐ’์„ ์‚ฌ์šฉ 4. ํ›„์œ„ ์—ฐ์‚ฐ์ž๋Š” ๊ฐ’์„ ์‚ฌ์šฉํ•˜๊ณ  ๊ฐ’์„ ๋ณ€๊ฒฝ
  • 36.
    ์ „์œ„, ํ›„์œ„ ์—ฐ์‚ฐ์˜์ฐจ์ด 1. C++ ์ŠคํŽ™์— ์ „์œ„/ ํ›„์œ„ ์—ฐ์‚ฐ์ž์˜ ๊ตฌํ˜„์„ ๋ณด๋ฉด ์ „์œ„๋Š” ๊ฐ’ ์„ ๋ณ€ํ•œ ๋’ค ๊ฐ’์„ ์‚ฌ์šฉํ•˜๊ณ , ํ›„์œ„๋Š” ๊ฐ’์„ ์‚ฌ์šฉํ•˜๊ณ  ๊ฐ’์„ ๋ณ€๊ฒฝ
  • 37.
    ํ›„์œ„ ์—ฐ์‚ฐ์€ ์™œConst๊ฐ€ ์•„๋‹Œ ๊ฐ ์ฒด๋ฅผ ๋ฐ˜ํ™˜ํ•˜๋Š” ๊ฒƒ์„ ๊บผ๋ คํ• ๊นŒ? 1. ๊ธฐ๋ณธ ์ œ๊ณต ํƒ€์ž…์— ๋Œ€ํ•œ ์ฆ๊ฐ€์—ฐ์‚ฐ์ž์˜ ๋™์ž‘๊ณผ ๋งž์ง€ ์•Š์Œ int ๋ฅผ ์˜ˆ๋กœ ๋“ค๋ฉด int i =1; i++++;๋กœ ์“ฐ์ง€ ์•Š๋Š”๋‹ค(์—๋Ÿฌ) 2. ์‚ฌ์šฉ์ž๋Š” ์ ˆ๋Œ€๋กœ ์ด๋Ÿฐ ๊ดด์ƒํ•œ ๋™์ž‘์„ ์›ƒ๊ณ  ๋„˜๊ธฐ์ง€ ์•Š๋Š”๋‹ค -> ํ”„๋กœ๊ทธ๋ž˜๋จธ ์ž…์žฅ์—์„œ ์ง๊ด€์ ์ด์ง€ ์•Š๊ณ  ์• ๋งคํ•˜๋‹ค
  • 38.
    ํ›„์œ„์—ฐ์‚ฐ๊ณผ ์ „์œ„์—ฐ์‚ฐ์˜ ํšจ์œจ 1.ํ›„์œ„ ์—ฐ์‚ฐ์€ ๋ฐ˜ํ™˜๊ฐ’์œผ๋กœ ์“ฐ๊ธฐ ์œ„ํ•œ ์ž„์‹œ๊ฐ์ฒด๋ฅผ ๋งŒ๋“ค ๊ณ , ์ง€์—ญ ๋ณ€์ˆ˜๋กœ์„œ ์ƒ๊ฒผ๋‹ค๊ฐ€ ์—†์–ด์ง€๋Š” ์ž„์‹œ ๊ฐ์ฒด๋ฅผ ๋งŒ๋“ฆ 2. ์ „์œ„์—ฐ์‚ฐ์ž๋Š” ์ด๋Ÿฐ ์ž„์‹œ ๊ฐ์ฒด๋ฅผ ์‚ฌ์šฉํ•˜์ง€ ์•Š์Œ ->ํ›„์œ„ ์—ฐ์‚ฐ๋ณด๋‹ค ์ „์œ„์—ฐ์‚ฐ์ด ๋” ํšจ์œจ์  3. ๋‘ ์—ฐ์‚ฐ์ž๋Š” ๋ฐ˜ํ™˜ํƒ€์ž…์„ ์ œ์™ธํ•˜๋ฉด ํ•˜๋Š” ์ผ์ด ๊ฐ™์Œ
  • 39.
    ํ•ญ๋ชฉ 6 ์ •๋ฆฌ 1.ํ•จ์‚ฌ์šฉ์ž ์ •์˜ ํƒ€์ž…์„ ๊ฐ€์ง€๊ณ  ์ž‘์—…ํ•  ๋•Œ์—๋Š” ๋˜๋„๋ก ์ „์œ„ ์—ฐ์‚ฐ์ž๋ฅผ ์‚ฌ์šฉํ•  ๊ฒƒ 2. ์ „์œ„, ํ›„์œ„ ์—ฐ์‚ฐ์ž์— ๋”ฐ๋ผ์„œ ๋ฐ˜ํ™˜ํƒ€์ž…์ด ์–ด๋–ป๊ฒŒ ๋˜ ๋Š”์ง€ ์•Œ์•„์•ผ ํ•จ
  • 40.
    ํ•ญ๋ชฉ 7 :&& , || ํ˜น์€ , ์—ฐ์‚ฐ์ž๋Š” ์˜ค๋ฒ„๋กœ๋”ฉ ๋Œ€์ƒ์ด ์ ˆ๋Œ€๋กœ ์•„๋‹ˆ๋‹ค 1. C์™€ C++์€ ๋ณตํ•ฉ์ ์ธ ๋ถˆ๋ฆฐ ํ‘œํ˜„์‹์„ ํ‰๊ฐ€ํ•  ๋•Œ ๋‹จ์ถ• ํ‰๊ฐ€ ์ฒ˜๋ฆฌ๋ฅผ ํ•  ์ˆ˜ ์žˆ์Œ, ํ‘œํ˜„์‹์˜ ์ผ๋ถ€๊ฐ€ ์ฐธ ํ˜น์€ ๊ฑฐ ์ง“์ด๋ž€ ๊ฒƒ์ด ํŒ๋ช…๋˜๋ฉด, ๊ทธ ์ดํ›„์˜ ํ‘œํ˜„์‹์€ ์Šคํ‚ต char * p; if( (p != 0) && (strlen(p) >10 ) โ€ฆ ) ์—์„œ p๊ฐ€ ๋„ ํฌ์ธํ„ฐ์ด๋ฉด strlen์€ ํ˜ธ์ถœํ•˜์ง€ ์•Š๊ณ  ์ข… ๋ฃŒ _________________________________________ _ if( (index < lowerBound) || (index > upperBound )) ์—์„œ index < lowerBound dใ…ฃ๋ฉด ๋’ค์— ์กฐ๊ฑด์‹์€ ์Šคํ‚ต
  • 41.
    && ์—ฐ์‚ฐ์ž 1. &&์„์‚ฌ์šฉ์ž๊ฐ€ ์ž„์˜๋กœ ๋ณ€๊ฒฝ ๊ฐ€๋Šฅ 2. &&์„ ๋ณ€๊ฒฝํ•œ๋‹ค๋Š” ๊ฒƒ์€ ์ปดํŒŒ์ผ๋Ÿฌ๊ฐ€ ๋‹ค์Œ๊ณผ ๊ฐ™์ด ํ•ด์„ํ•˜๊ฒŒ ํ•œ๋‹ค๋Š” ๊ฒƒ 3. ํ•จ์ˆ˜ ํ˜ธ์ถœ์ด ์ด๋ฃจ์–ด ์งˆ ๋•Œ ๋ชจ๋“  ๋งค๊ฐœ๋ณ€์ˆ˜๋ฅผ ํ‰๊ฐ€ 4. ํ‰๊ฐ€ ์ˆœ์„œ๋ฅผ ๋ช…ํ™•ํ•˜๊ฒŒ ์•Œ์ง€ ๋ชปํ•ด ์–ด๋–ค ๊ฒƒ์„ ๋จผ์ € ์ฒ˜๋ฆฌํ•  ๊ฒƒ์ธ์ง€ ์•Œ ์ˆ˜ ์—†์Œ (๋‹จ์ถ•ํ‰๊ฐ€๋Š” ์™ผ์ชฝ์—์„œ ์˜ค๋ฅธ์ชฝ์œผ๋กœ ํ‘œํ˜„์‹ ํ‰๊ฐ€) || ์—ฐ์‚ฐ์ž๋„ ๋งˆ์ฐฌ๊ฐ€์ง€์ด๋‹ค! &&, ||๋ฅผ ์˜ค๋ฒ„๋กœ๋”ฉ ํ•œ๋‹ค๋Š” ๊ฒƒ์€ ๋‹จ์ถ•ํ‰๊ฐ€์— ๋ฌธ์ œ๊ฐ€ ์ƒ๊ธธ ์ˆ˜ ์žˆ์Œ!
  • 42.
    , ์—ฐ์‚ฐ์ž 1. ์‰ผํ‘œ์—ฐ์‚ฐ์ž๋Š” ์‰ผํ‘œ์˜ ์™ผ์ชฝ์— ์žˆ๋Š” ํ‘œํ˜„์‹์„ ๋จผ์ € ํ‰๊ฐ€ ํ•˜๊ณ , ๊ทธ ๋‹ค์Œ์— ์˜ค๋ฅธ์ชฝ์— ์žˆ๋Š” ํ‘œํ˜„์‹์„ ํ‰๊ฐ€ํ•˜๋ฉด์„œ ์ง„ ํ–‰ ๋„ ์˜ค๋ฒ„๋กœ๋”ฉ์ด ๊ฐ€๋Šฅ ํ•˜๋‹ค, ํ•˜์ง€๋งŒ ์˜ค๋ฒ„๋ฆฌ๋“ฑ์„ ํ•˜๋ฉด ์›๋ž˜์˜ ๋™์ž‘๊ณผ
  • 43.
    ํ•ญ๋ชฉ 7 ์ •๋ฆฌ 1.&& ์™€ || ๊ทธ๋ฆฌ๊ณ  , ์—ฐ์‚ฐ์ž๋Š” ํ•จ๋ถ€๋กœ ์˜ค๋ฒ„๋กœ๋”ฉ ํ•˜๋ฉด ์•ˆ ๋œ๋‹ค -> ๋‹จ์ถ•ํ‰๊ฐ€ ์ˆœ์„œ ๋ฐ ๋™์ž‘๋ฐฉ์‹์— ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ์Œ 2. ์˜ค๋ฒ„๋กœ๋”ฉ์ด ๊ฐ€๋Šฅํ•œ ์—ฐ์‚ฐ์ž๋ผ๋„ ์—ฐ์‚ฐ์ž ์˜ค๋ฒ„๋กœ๋”ฉ์˜ ๋ชฉ์ ์„ ์ดํ•ดํ•˜๊ณ  ์จ์•ผ ํ•จ
  • 44.
    ํ•ญ๋ชฉ 8 :new ์™€ delete์˜ ์˜๋ฏธ๋ฅผ ์ •ํ™•ํžˆ ๊ตฌ๋ถ„ํ•˜๊ณ  ์ดํ•ดํ•˜์ž 1. string *ps = new string(โ€œmemory Managementโ€); new์—ฐ์‚ฐ์ž์˜ ๋™์ž‘์€ 2๋‹จ๊ณ„ ์š”์ฒญํ•œ ํƒ€์ž…์˜ ๊ฐ์ฒด๋ฅผ ๋‹ด์„ ์ˆ˜ ์žˆ๋Š” ํฌ๊ธฐ์˜ ๋ฉ”๋ชจ๋ฆฌ ํ•  ๋‹น ํ• ๋‹น๋œ ๋ฉ”๋ชจ๋ฆฌ์— ๊ฐ์ฒด ์ดˆ๊ธฐํ™”๋ฅผ ์ˆ˜ํ–‰ 2. operator new ํ•จ์ˆ˜๋Š” void * operator new(size_t size); ์ด ํ•จ์ˆ˜์˜ ๋ฐ˜ํ™˜ ํƒ€์ž…์€ void*์ด๋‹ค.
  • 45.
    new ์—ฐ์‚ฐ์ž๊ฐ€ ํ•˜๋Š”์ผ 1. new์—ฐ์ž์—์„œ ์ƒ์„ฑ์ž ํ˜ธ์ถœ ๋‹จ๊ณ„๋Š” ํ”„๋กœ๊ทธ๋ž˜๋จธ๊ฐ€ ์†๋Œˆ ์ˆ˜ ์—†์Œ, ์ปดํŒŒ์ผ๋Ÿฌ๋งŒ์ด ๊ฐ€๋Šฅ
  • 46.
    ๋ฉ”๋ชจ๋ฆฌ ์ง€์ • new 1.ํ• ๋‹น๋ฐ›์€ ๋ฏธ์ดˆ๊ธฐํ™” ๋ฉ”๋ชจ๋ฆฌ๊ฐ€ ์žˆ๊ณ , ๊ฐ์ฒด ํ˜•ํƒœ๋กœ ๋งŒ๋“ค๊ณ  ์‹ถ์„ ๋•Œ ์“ฐ๋Š” ๋ฐฉ๋ฒ• ๊ฐ์ฒด๋ฅผ buffer๋กœ ์ง€์ •๋˜๋Š” ๋ฉ”๋ชจ๋ฆฌ์— ์ƒ์„ฑํ•œ ํ›„์— ๊ทธ ํฌ์ธํ„ฐ๋ฅผ ๋ฐ˜ํ™˜
  • 47.
    ๊ฐ์ฒด ์‚ญ์ฒด์™€ ๋ฉ”๋ชจ๋ฆฌํ•ด์ œ 1. ๋ฉ”๋ชจ๋ฆฌ ๋ˆ„์ˆ˜๋ฅผ ๋ง‰๊ธฐ ์œ„ํ•ด, ํ• ๋‹นํ•œ ๋ฉ”๋ชจ๋ฆฌ๋Š” ๋ฐ˜๋“œ์‹œ ํ•ด์ œ 2. ๊ธฐ๋ณธ์ ์œผ๋กœ delete ์—ฐ์‚ฐ์ž๋ฅผ ์‚ฌ์šฉ 3. operator delete ํ•จ์ˆ˜ ์ด์šฉ
  • 48.
    ๊ฐ์ฒด์˜ ๋ฐฐ์—ด ๋ฉ”๋ชจ๋ฆฌํ•ด์ œ 1. ๋‹จ์ผ ๊ฐ์ฒด ํ•ด์ œ์™€ ๋‹ฌ๋ฆฌ ๊ฐ์ฒด ๋ฐฐ์—ด์˜ ํ•ด์ œ๋Š” operator new[]๋ฅผ ํ˜ธ์ถœ
  • 49.
    ํ•ญ๋ชฉ 8 ์ •๋ฆฌ 1.new์™€ delete ์—ฐ์‚ฐ์ž๋Š” C++์—์„œ ๊ธฐ๋ณธ์ ์œผ๋กœ ์ œ๊ณต๋˜ ๋Š” ํ•จ์ˆ˜ 2. ์ด ์—ฐ์‚ฐ์ž๊ฐ€ ๋‚ด๋ถ€์ ์œผ๋กœ ์‚ฌ์šฉํ•˜๋Š” ๋ฉ”๋ชจ๋ฆฌ ํ• ๋‹น ํ•จ์ˆ˜ ๋ฐ ํ•ด์ œ ํ•จ์ˆ˜๋Š” ์ˆ˜์ • ๊ฐ€๋Šฅ 3. ํ•˜์ง€๋งŒ ์ด ์—ฐ์‚ฐ์ž์˜ ๋™์ž‘์„ ์ˆ˜์ •ํ•˜๋Š” ๊ฒƒ์€ ๋งŽ์€ ์œ„ํ—˜ ๊ฐ์ˆ˜ -> ์–ด์ฐจํ”ผ ํ•˜๋Š” ์ผ์€ C++์–ธ์–ด์—์„œ ๊ณ ์ •๋˜์–ด ์žˆ ์Œ