21. [C++] ์—ฐ์‚ฐ์ž ์˜ค๋ฒ„๋กœ๋”ฉ

2019. 6. 13. 07:15ใ†PROGRAMMING/C & C++

 

์—ฐ์‚ฐ์ž ์˜ค๋ฒ„๋กœ๋”ฉ 

 

C++์—์„œ๋Š” ํ•จ์ˆ˜ ๋ฟ๋งŒ ์•„๋‹ˆ๋ผ ์—ฐ์‚ฐ์ž๋„ ์˜ค๋ฒ„๋กœ๋”ฉ์ด ๊ฐ€๋Šฅํ•˜๋‹ค.

์‚ฌ์šฉ์ž๊ฐ€ ๊ธฐ์กด์˜ ์—ฐ์‚ฐ์ž๋ฅผ ์žฌ์ •์˜ํ•˜๋Š” ํด๋ž˜์Šค ๋ฌธ๋ฒ•์ด๋‹ค.

์ƒˆ๋กœ์šด ์—ฐ์‚ฐ์ž๋ฅผ ์ฐฝ์กฐํ•˜๋Š” ๋ฌธ๋ฒ•์€ ์•„๋‹ˆ๋‹ค.

๊ธฐ์กด ์—ฐ์‚ฐ์ž์˜ ๋ณธ์งˆ์„ ํ๋ ค์„  ์•ˆ๋œ๋‹ค.

 

 

์—ฐ์‚ฐ์ž ์˜ค๋ฒ„๋กœ๋”ฉ ๋ฐฉ๋ฒ•์—๋Š” ๋‹ค์Œ ๋‘ ๊ฐ€์ง€๊ฐ€ ์žˆ๋‹ค.

1. ๋ฉค๋ฒ„ํ•จ์ˆ˜์— ์˜ํ•œ ๋ฐฉ๋ฒ•

2. ์ „์—ญํ•จ์ˆ˜์— ์˜ํ•œ ๋ฐฉ๋ฒ•.

๋ฉค๋ฒ„ ํ•จ์ˆ˜ ๊ธฐ๋ฐ˜์œผ๋กœ ์˜ค๋ฒ„๋กœ๋”ฉ๋œ ํ•จ์ˆ˜๊ฐ€ ์ „์—ญํ•จ์ˆ˜ ๊ธฐ๋ฐ˜์œผ๋กœ ์˜ค๋ฒ„๋กœ๋”ฉ๋œ ํ•จ์ˆ˜๋ณด๋‹ค ์šฐ์„ ์‹œ ํ˜ธ์ถœ๋œ๋‹ค.

 

 

[ 1. ๋ฉค๋ฒ„ ํ•จ์ˆ˜์— ์˜ํ•œ ๋ฐฉ๋ฒ• ]

 

'operator' ํ‚ค์›Œ๋“œ์™€ '์—ฐ์‚ฐ์ž'๋ฅผ ๋ฌถ์–ด์„œ ํ•จ์ˆ˜์˜ ์ด๋ฆ„์„ ์ •์˜ํ•˜๋ฉด,

ํ•จ์ˆ˜์˜ ์ด๋ฆ„์„ ์ด์šฉํ•œ ํ•จ์ˆ˜ ํ˜ธ์ถœ ๋ฟ๋งŒ ์•„๋‹ˆ๋ผ, ์—ฐ์‚ฐ์ž๋ฅผ ์ด์šฉํ•œ ํ•จ์ˆ˜์˜ ํ˜ธ์ถœ๋„ ํ—ˆ์šฉํ•ด์ค€๋‹ค.

 

 

 

๋ง์…ˆ ์—ฐ์‚ฐ์ž, ๋บ„์…ˆ ์—ฐ์‚ฐ์ž์— ๋Œ€ํ•ด์„œ ์—ฐ์‚ฐ์ž ์˜ค๋ฒ„๋กœ๋”ฉ์„ ํ•ด๋ณด๋ฉด ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค.

 

 

 

[ ์ฆ๊ฐ ์—ฐ์‚ฐ์ž ์˜ค๋ฒ„๋กœ๋”ฉ ]

 

์—ฐ์‚ฐ๋Ÿ‰์ด ๋” ์ ์€ ์ „์œ„ ์ฆ๊ฐ์ด ๋ฏธ์„ธํ•˜์ง€๋งŒ ์†๋„๊ฐ€ ๋” ๋น ๋ฅด๋‹ค.

 

 

[ 2. ์ „์—ญ ํ•จ์ˆ˜์— ์˜ํ•œ ๋ฐฉ๋ฒ• ]

 value ์™€ ๊ฐ์ฒด์— ๋Œ€ํ•œ ์ „์—ญ ์—ฐ์‚ฐ์ž ์˜ค๋ฒ„๋กœ๋”ฉ.

๋งค๊ฐœ๋ณ€์ˆ˜ ์ค‘ ํ•˜๋‚˜๋Š” ๋ฐ˜๋“œ์‹œ ๊ฐ์ฒด ํƒ€์ž…์ด๊ฑฐ๋‚˜, ๊ฐ์ฒด์˜ ๋ ˆํผ๋Ÿฐ์Šค ํƒ€์ž…์ด์–ด์•ผ ํ•œ๋‹ค.

 

 

 

 

 

 

[ ์˜ค๋ฒ„๋กœ๋”ฉ์ด ๋ถˆ๊ฐ€๋Šฅํ•œ ์—ฐ์‚ฐ์ž์˜ ์ข…๋ฅ˜ ]

. (๋ฉค๋ฒ„ ์ ‘๊ทผ ์—ฐ์‚ฐ์ž)

.* (๋ฉค๋ฒ„ ํฌ์ธํ„ฐ ์—ฐ์‚ฐ์ž)

:: (๋ฒ”์œ„ ์ง€์ • ์—ฐ์‚ฐ์ž)

?: (์กฐ๊ฑด ์—ฐ์‚ฐ์ž - 3ํ•ญ ์—ฐ์‚ฐ์ž)

sizeof (๋ฐ”์ดํŠธ ๋‹จ์œ„ ํฌ๊ธฐ ์—ฐ์‚ฐ์ž)

typeid (RTTI ๊ด€๋ จ ์—ฐ์‚ฐ์ž)

 

(ํ˜•๋ณ€ํ™˜ ์—ฐ์‚ฐ์ž)

static_cast

dynamic_cast

const_cast

reinterpret_cast

 

 

[ ๋ฉค๋ฒ„ ํ•จ์ˆ˜ ๊ธฐ๋ฐ˜์œผ๋กœ๋งŒ ์˜ค๋ฒ„๋กœ๋”ฉ์ด ๊ฐ€๋Šฅํ•œ ์—ฐ์‚ฐ์ž ]

= (๋Œ€์ž… ์—ฐ์‚ฐ์ž)

() (ํ•จ์ˆ˜ ํ˜ธ์ถœ ์—ฐ์‚ฐ์ž)

[] (๋ฐฐ์—ด ์ ‘๊ทผ ์—ฐ์‚ฐ์ž. ์ธ๋ฑ์Šค ์—ฐ์‚ฐ์ž)

-> (๋ฉค๋ฒ„ ์ ‘๊ทผ์„ ์œ„ํ•œ ํฌ์ธํ„ฐ ์—ฐ์‚ฐ์ž)

 

 

[ ์—ฐ์‚ฐ์ž๋ฅผ ์˜ค๋ฒ„๋กœ๋”ฉ ํ•˜๋Š”๋ฐ ์žˆ์–ด์„œ์˜ ์ฃผ์˜์‚ฌํ•ญ ]

1. ๋ณธ๋ž˜์˜ ์˜๋„๋ฅผ ๋ฒ—์–ด๋‚œ ํ˜•ํƒœ์˜ ์—ฐ์‚ฐ์ž ์˜ค๋ฒ„๋กœ๋”ฉ์€ ์ข‹์ง€ ์•Š๋‹ค.

2. ์—ฐ์‚ฐ์ž์˜ ์šฐ์„ ์ˆœ์œ„์™€ ๊ฒฐํ•ฉ์„ฑ์€ ๋ฐ”๋€Œ์ง€ ์•Š๋Š”๋‹ค.

3. ๋งค๊ฐœ๋ณ€์ˆ˜์˜ ๋””ํดํŠธ ๊ฐ’ ์„ค์ •์ด ๋ถˆ๊ฐ€๋Šฅํ•˜๋‹ค.

4. ์—ฐ์‚ฐ์ž์˜ ์ˆœ์ˆ˜ ๊ธฐ๋Šฅ๊นŒ์ง€ ๋นผ์•—์„ ์ˆ˜๋Š” ์—†๋‹ค.