๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ

์ธ์Šคํ„ด์Šค2

[C++] 16-3. ์ƒ์†(Inheritance)๊ด€๊ณ„์˜ ์ธ์Šคํ„ด์Šค ์ƒ์„ฑ, ์†Œ๋ฉธ ์ƒ์† ๊ด€๊ณ„์—์„œ ์ƒ์„ฑ๋˜๋Š” ์ธ์Šคํ„ด์Šค์˜ ์œ ํ˜• ์ค‘ ๋‹คํ˜•์„ฑ์„ ๊ธฐ๋ฐ˜์œผ๋กœ ๋งŒ๋“ค์–ด์ง„ ์ธ์Šคํ„ด์Šค๋Š” ๋ณดํ†ต ํŒŒ์ƒํด๋ž˜์Šค(Derived Class)๋ฅผ ํ†ตํ•ด ๊ธฐ๋ณธ ํด๋ž˜์Šค(Base Class)๋ฅผ ์ดˆ๊ธฐํ™”ํ•ฉ๋‹ˆ๋‹ค. ์ƒ์† ๊ด€๊ณ„์—์„œ ํŒŒ์ƒ ํด๋ž˜์Šค์˜ ์ธ์Šคํ„ด์Šค๋ฅผ ๋งŒ๋“ ๋‹ค ํ•˜๋”๋ผ๋„ ๋‚ด๋ถ€์ ์œผ๋กœ๋Š” ๊ธฐ๋ณธ ํด๋ž˜์Šค์˜ ์ธ์Šคํ„ด์Šค๊นŒ์ง€ ๋งŒ๋“ค์–ด์ง€์ง€๋งŒ ๊ธฐ๋ณธ ํด๋ž˜์Šค์˜ ์ƒ์„ฑ์ž๋Š” ์ž„์˜๋กœ ํ˜ธ์ถœํ•  ์ˆ˜ ์—†๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค. ๋ฐ˜๋Œ€๋กœ ์ธ์Šคํ„ด์Šค์˜ ์†Œ๋ฉธ๋„ ๋งˆ์ฐฌ๊ฐ€์ง€์ž…๋‹ˆ๋‹ค. ํŒŒ์ƒ ํด๋ž˜์Šค๋งŒ ์†Œ๋ฉธํ•˜๊ณ  ๊ธฐ๋ณธ ํด๋ž˜์Šค์˜ ์˜์—ญ์ด ์†Œ๋ฉธ๋˜์ง€ ์•Š์œผ๋ฉด ๋ฉ”๋ชจ๋ฆฌ ๋ˆ„์ˆ˜(Memory Leak)๊ฐ€ ๋ฐœ์ƒํ•  ๊ฐ€๋Šฅ์„ฑ์ด ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ์ด ๋˜ํ•œ ํŒŒ์ƒ ํด๋ž˜์Šค์—์„œ ์ฑ…์ž„์ ธ์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์ƒ์„ฑ์ž(Contructor) ๊ธฐ๋ณธ ํด๋ž˜์Šค(Base Class)์˜ ์ƒ์„ฑ์ž ํ˜ธ์ถœ: ํŒŒ์ƒ ํด๋ž˜์Šค(Derived Class)์˜ ์ƒ์„ฑ์ž๊ฐ€ ํ˜ธ์ถœ๋˜๊ธฐ ์ „์— ๋จผ์ € ๊ธฐ๋ณธ .. 2023. 6. 29.
์‹ฑ๊ธ€ํ†ค ํŒจํ„ด โœ… ์‹ฑ๊ธ€ํ†ค ํŒจํ„ด ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์ด ์‹œ์ž‘๋  ๋•Œ ์–ด๋–ค ํด๋ž˜์Šค๊ฐ€ ์ตœ์ดˆ ํ•œ๋ฒˆ๋งŒ ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ํ• ๋‹นํ•˜๊ณ (Static) ๊ทธ ๋ฉ”๋ชจ๋ฆฌ์— ์ธ์Šคํ„ด์Šค๋ฅผ ๋งŒ๋“ค์–ด ์‚ฌ์šฉํ•˜๋Š” ๋””์ž์ธํŒจํ„ด. ์ƒ์„ฑ์ž๊ฐ€ ์—ฌ๋Ÿฌ ์ฐจ๋ก€ ํ˜ธ์ถœ๋˜๋”๋ผ๋„ ์‹ค์ œ๋กœ ์ƒ์„ฑ๋˜๋Š” ๊ฐ์ฒด๋Š” ํ•˜๋‚˜๊ณ  ์ตœ์ดˆ ์ƒ์„ฑ ์ดํ›„์— ํ˜ธ์ถœ๋œ ์ƒ์„ฑ์ž๋Š” ์ตœ์ดˆ์— ์ƒ์„ฑํ•œ ๊ฐ์ฒด๋ฅผ ๋ฐ˜ํ™˜ํ•œ๋‹ค. (์ž๋ฐ”์—์„  ์ƒ์„ฑ์ž๋ฅผ private๋กœ ์„ ์–ธํ•ด์„œ ์ƒ์„ฑ ๋ถˆ๊ฐ€ํ•˜๊ฒŒ ํ•˜๊ณ  getInstance()๋กœ ๋ฐ›์•„์“ฐ๊ธฐ๋„ ํ•จ) => ์‹ฑ๊ธ€ํ†ค ํŒจํ„ด์€ ๋‹จ ํ•˜๋‚˜์˜ ์ธ์Šคํ„ด์Šค๋ฅผ ์ƒ์„ฑํ•ด ์‚ฌ์šฉํ•˜๋Š” ๋””์ž์ธ ํŒจํ„ด์ด๋‹ค. (์ธ์Šคํ„ด์Šค๊ฐ€ ํ•„์š” ํ•  ๋•Œ ๋˜‘๊ฐ™์€ ์ธ์Šคํ„ด์Šค๋ฅผ ๋งŒ๋“ค์–ด ๋‚ด๋Š” ๊ฒƒ์ด ์•„๋‹ˆ๋ผ, ๋™์ผ(๊ธฐ์กด) ์ธ์Šคํ„ด์Šค๋ฅผ ์‚ฌ์šฉํ•˜๊ฒŒํ•จ) โœ… ์‹ฑ๊ธ€ํ†ค ํŒจํ„ด์„ ์“ฐ๋Š” ์ด์œ  ๊ณ ์ •๋œ ๋ฉ”๋ชจ๋ฆฌ ์˜์—ญ์„ ์–ป์œผ๋ฉด์„œ ํ•œ๋ฒˆ์˜ new๋กœ ์ธ์Šคํ„ด์Šค๋ฅผ ์‚ฌ์šฉํ•˜๊ธฐ ๋•Œ๋ฌธ์— ๋ฉ”๋ชจ๋ฆฌ ๋‚ญ๋น„๋ฅผ ๋ฐฉ์ง€ํ•  ์ˆ˜ ์žˆ์Œ ๋˜ํ•œ ์‹ฑ๊ธ€ํ†ค.. 2023. 1. 3.