Notice
Recent Posts
Recent Comments
Link
๊ด€๋ฆฌ ๋ฉ”๋‰ด

๋ชฉ๋ก์ „์ฒด ๊ธ€ (1096)

KoreanFoodie's Study

Effective C++ | ํ•ญ๋ชฉ 41 : ํ…œํ”Œ๋ฆฟ ํ”„๋กœ๊ทธ๋ž˜๋ฐ์˜ ์ฒœ๋ฆฟ๊ธธ๋„ ์•”์‹œ์  ์ธํ„ฐํŽ˜์ด์Šค์™€ ์ปดํŒŒ์ผ ํƒ€์ž„ ๋‹คํ˜•์„ฑ๋ถ€ํ„ฐ

C++ ํ”„๋กœ๊ทธ๋ž˜๋จธ์˜ ํ•„๋…์„œ์ด์ž ๋ฐ”์ด๋ธ”์ธ, ์Šค์ฝง ๋งˆ์ด์–ด์Šค์˜ Modern Effective C++ ๋ฅผ ์ฝ๊ณ  ๊ธฐ์–ตํ•  ๋‚ด์šฉ์„ ์š”์•ฝํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ๊ผญ ์ฝ์–ด๋ณด์‹œ๊ธธ ์ถ”์ฒœ๋“œ๋ฆฝ๋‹ˆ๋‹ค! ํ•ญ๋ชฉ 41 : ํ…œํ”Œ๋ฆฟ ํ”„๋กœ๊ทธ๋ž˜๋ฐ์˜ ์ฒœ๋ฆฟ๊ธธ๋„ ์•”์‹œ์  ์ธํ„ฐํŽ˜์ด์Šค์™€ ์ปดํŒŒ์ผ ํƒ€์ž„ ๋‹คํ˜•์„ฑ๋ถ€ํ„ฐ ํ•ต์‹ฌ : 1. ํด๋ž˜์Šค ๋ฐ ํ…œํ”Œ๋ฆฟ์€ ๋ชจ๋‘ ์ธํ„ฐํŽ˜์ด์Šค์™€ ๋‹คํ˜•์„ฑ์„ ์ง€์›ํ•œ๋‹ค. 2. ํด๋ž˜์Šค์˜ ๊ฒฝ์šฐ, ์ธํ„ฐํŽ˜์ด์Šค๋Š” ๋ช…์‹œ์ ์ด๋ฉฐ ํ•จ์ˆ˜์˜ ์‹œ๊ทธ๋‹ˆ์ฒ˜๋ฅผ ์ค‘์‹ฌ์œผ๋กœ ๊ตฌ์„ฑ๋˜์–ด์žˆ๋‹ค. ๋‹คํ˜•์„ฑ์€ ํ”„๋กœ๊ทธ๋žจ ์‹คํ–‰ ์ค‘์— ๊ฐ€์ƒ ํ•จ์ˆ˜๋ฅผ ํ†ตํ•ด ๋‚˜ํƒ€๋‚œ๋‹ค. 3. ํ…œํ”Œ๋ฆฟ ๋งค๊ฐœ๋ณ€์ˆ˜์˜ ๊ฒฝ์šฐ, ์ธํ„ฐํŽ˜์ด์Šค๋Š” ์•”์‹œ์ ์ด๋ฉฐ ์œ ํšจ ํ‘œํ˜„์‹์— ๊ธฐ๋ฐ˜์„ ๋‘์–ด ๊ตฌ์„ฑ๋œ๋‹ค. ๋‹คํ˜•์„ฑ์€ ์ปดํŒŒ์ผ ์ค‘์— ํ…œํ”Œ๋ฆฟ ์ธ์Šคํ„ด์Šคํ™”์™€ ํ•จ์ˆ˜ ์˜ค๋ฒ„๋กœ๋”ฉ ๋ชจํ˜ธ์„ฑ ํ•ด๊ฒฐ์„ ํ†ตํ•ด ๋‚˜ํƒ€๋‚œ๋‹ค. ๊ฐ์ฒด ์ง€ํ–ฅ ํ”„๋กœ๊ทธ๋ž˜๋ฐ์˜ ์„ธ๊ณ„๋ฅผ ํšŒ์ „์‹œํ‚ค๋Š” ์ถ•์€ ๋ช…์‹œ์  ์ธํ„ฐํŽ˜์ด์Šค(ex..

Tutorials/C++ : Advanced 2022. 10. 25. 16:30
Effective C++ | ํ•ญ๋ชฉ 40 : ๋‹ค์ค‘ ์ƒ์†์€ ์‹ฌ์‚ฌ์ˆ™๊ณ ํ•ด์„œ ์‚ฌ์šฉํ•˜์ž

C++ ํ”„๋กœ๊ทธ๋ž˜๋จธ์˜ ํ•„๋…์„œ์ด์ž ๋ฐ”์ด๋ธ”์ธ, ์Šค์ฝง ๋งˆ์ด์–ด์Šค์˜ Modern Effective C++ ๋ฅผ ์ฝ๊ณ  ๊ธฐ์–ตํ•  ๋‚ด์šฉ์„ ์š”์•ฝํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ๊ผญ ์ฝ์–ด๋ณด์‹œ๊ธธ ์ถ”์ฒœ๋“œ๋ฆฝ๋‹ˆ๋‹ค! ํ•ญ๋ชฉ 40 : ๋‹ค์ค‘ ์ƒ์†์€ ์‹ฌ์‚ฌ์ˆ™๊ณ ํ•ด์„œ ์‚ฌ์šฉํ•˜์ž ํ•ต์‹ฌ : 1. ๋‹ค์ค‘ ์ƒ์†์€ ๋‹จ์ผ ์ƒ์†๋ณด๋‹ค ๋ณต์žกํ•˜๋‹ค. ์ƒˆ๋กœ์šด ๋ชจํ˜ธ์„ฑ ๋ฌธ์ œ๋ฅผ ์ผ์œผํ‚ฌ ๋ฟ ์•„๋‹ˆ๋ผ ๊ฐ€์ƒ ์ƒ์†์ด ํ•„์š”ํ•ด์งˆ ์ˆ˜๋„ ์žˆ๋‹ค. 2. ๊ฐ€์ƒ ์ƒ์†์„ ์“ฐ๋ฉด ํฌ๊ธฐ ๋น„์šฉ, ์†๋„ ๋น„์šฉ์ด ๋Š˜์–ด๋‚˜๋ฉฐ ์ดˆ๊ธฐํ™” ๋ฐ ๋Œ€์ž… ์—ฐ์‚ฐ์˜ ๋ณต์žก๋„๊ฐ€ ์ปค์ง„๋‹ค. ๋”ฐ๋ผ์„œ ๊ฐ€์ƒ ๊ธฐ๋ณธ ํด๋ž˜์Šค์—๋Š” ๋ฐ์ดํ„ฐ๋ฅผ ๋‘์ง€ ์•Š๋Š” ๊ฒƒ์ด ํ˜„์‹ค์ ์œผ๋กœ ๊ฐ€์žฅ ์‹ค์šฉ์ ์ด๋‹ค. 3. ๋‹ค์ค‘ ์ƒ์†์„ ์ ๋ฒ•ํ•˜๊ฒŒ ์“ธ ์ˆ˜ ์žˆ๋Š” ๊ฒฝ์šฐ๊ฐ€ ์žˆ๋‹ค. ์—ฌ๋Ÿฌ ์‹œ๋‚˜๋ฆฌ์˜ค ์ค‘ ํ•˜๋‚˜๋Š”, ์ธํ„ฐํŽ˜์ด์Šค ํด๋ž˜์Šค๋กœ๋ถ€ํ„ฐ public ์ƒ์†์„ ์‹œํ‚ด๊ณผ ๋™์‹œ์— ๊ตฌํ˜„์„ ๋•๋Š” ํด๋ž˜์Šค๋กœ๋ถ€ํ„ฐ private ์ƒ์†์„ ์‹œํ‚ค๋Š” ..

Tutorials/C++ : Advanced 2022. 10. 25. 16:30
Effective C++ | ํ•ญ๋ชฉ 39 : private ์ƒ์†์€ ์‹ฌ์‚ฌ์ˆ™๊ณ ํ•ด์„œ ๊ตฌ์‚ฌํ•˜์ž

C++ ํ”„๋กœ๊ทธ๋ž˜๋จธ์˜ ํ•„๋…์„œ์ด์ž ๋ฐ”์ด๋ธ”์ธ, ์Šค์ฝง ๋งˆ์ด์–ด์Šค์˜ Modern Effective C++ ๋ฅผ ์ฝ๊ณ  ๊ธฐ์–ตํ•  ๋‚ด์šฉ์„ ์š”์•ฝํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ๊ผญ ์ฝ์–ด๋ณด์‹œ๊ธธ ์ถ”์ฒœ๋“œ๋ฆฝ๋‹ˆ๋‹ค! ํ•ญ๋ชฉ 39 : private ์ƒ์†์€ ์‹ฌ์‚ฌ์ˆ™๊ณ ํ•ด์„œ ๊ตฌ์‚ฌํ•˜์ž ํ•ต์‹ฌ : 1. private ์ƒ์†์˜ ์˜๋ฏธ๋Š” is-implmented-in-terms-of(...๋Š” ...๋ฅผ ์จ์„œ ๊ตฌํ˜„๋จ) ์ด๋‹ค. ๋Œ€๊ฐœ ๊ฐ์ฒด ํ•ฉ์„ฑ๊ณผ ๋น„๊ตํ•ด์„œ ์“ฐ์ด๋Š” ๋ถ„์•ผ๊ฐ€ ๋งŽ์ง€๋Š” ์•Š์ง€๋งŒ, ํŒŒ์ƒ ํด๋ž˜์Šค ์ชฝ์—์„œ ๊ธฐ๋ณธ ํด๋ž˜์Šค์˜ protected ๋ฉค๋ฒ„์— ์ ‘๊ทผํ•ด์•ผ ํ•  ๊ฒฝ์šฐ ํ˜น์€ ์ƒ์†๋ฐ›์€ ๊ฐ€์ƒ ํ•จ์ˆ˜๋ฅผ ์žฌ์ •์˜ํ•ด์•ผ ํ•  ๊ฒฝ์šฐ์—๋Š” private ์ƒ์†์ด ๋‚˜๋ฆ„๋Œ€๋กœ ์˜๋ฏธ๊ฐ€ ์žˆ๋‹ค. 2. ๊ฐ์ฒด ํ•ฉ์„ฑ๊ณผ ๋‹ฌ๋ฆฌ, private ์ƒ์†์€ ๊ณต๋ฐฑ ๊ธฐ๋ณธ ํด๋ž˜์Šค ์ตœ์ ํ™”(EBO) ๋ฅผ ํ™œ์„ฑํ™”์‹œํ‚ฌ์ˆ˜ ์žˆ๋‹ค. ์ด๋Š” ๊ฐ์ฒด ํฌ๊ธฐ๋ฅผ ๊ฐ€์ง€๊ณ  ๊ณ ..

Tutorials/C++ : Advanced 2022. 10. 25. 16:29
Effective C++ | ํ•ญ๋ชฉ 38 : "has-a(...๋Š”...๋ฅผ ๊ฐ€์ง)" ํ˜น์€ "is-implemented-in-terms-of(...๋Š”...๋ฅผ ์จ์„œ ๊ตฌํ˜„๋จ)"๋ฅผ ๋ชจํ˜•ํ™”ํ•  ๋•Œ๋Š” ๊ฐ์ฒด ํ•ฉ์„ฑ์„ ์‚ฌ์šฉํ•˜์ž

C++ ํ”„๋กœ๊ทธ๋ž˜๋จธ์˜ ํ•„๋…์„œ์ด์ž ๋ฐ”์ด๋ธ”์ธ, ์Šค์ฝง ๋งˆ์ด์–ด์Šค์˜ Modern Effective C++ ๋ฅผ ์ฝ๊ณ  ๊ธฐ์–ตํ•  ๋‚ด์šฉ์„ ์š”์•ฝํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ๊ผญ ์ฝ์–ด๋ณด์‹œ๊ธธ ์ถ”์ฒœ๋“œ๋ฆฝ๋‹ˆ๋‹ค! ํ•ญ๋ชฉ 38 : "has-a(...๋Š”...๋ฅผ ๊ฐ€์ง)" ํ˜น์€ "is-implemented-in-terms-of(...๋Š”...๋ฅผ ์จ์„œ ๊ตฌํ˜„๋จ)"๋ฅผ ๋ชจํ˜•ํ™”ํ•  ๋•Œ๋Š” ๊ฐ์ฒด ํ•ฉ์„ฑ์„ ์‚ฌ์šฉํ•˜์ž ํ•ต์‹ฌ : 1. ๊ฐ์ฒด ํ•จ์„ฑ(composition)์˜ ์˜๋ฏธ๋Š” public ์ƒ์†์ด ๊ฐ€์ง„ ์˜๋ฏธ์™€ ์™„์ „ํžˆ ๋‹ค๋ฅด๋‹ค. 2. ์‘์šฉ ์˜์—ญ์—์„œ ๊ฐ์ฒด ํ•ฉ์„ฑ์˜ ์˜๋ฏธ๋Š” has-a(...๋Š”...๋ฅผ ๊ฐ€์ง)์ด๋‹ค. ๊ตฌํ˜„ ์˜์—ญ์—์„œ๋Š” is-implemented-in-terms-of(...๋Š” ...๋ฅผ ์จ์„œ ๊ตฌํ˜„๋จ)์˜ ์˜๋ฏธ๋ฅผ ๊ฐ–๋Š”๋‹ค. ํ•ฉ์„ฑ(composition) ์ด๋ž€, ์–ด๋–ค ํƒ€์ž…์˜ ๊ฐ์ฒด๋“ค์ด ๊ทธ์™€ ๋‹ค๋ฅธ ํƒ€..

Tutorials/C++ : Advanced 2022. 10. 25. 16:29
Effective C++ | ํ•ญ๋ชฉ 37 : ์–ด๋–ค ํ•จ์ˆ˜์— ๋Œ€ํ•ด์„œ๋„ ์ƒ์†๋ฐ›์€ ๊ธฐ๋ณธ ๋งค๊ฐœ๋ณ€์ˆ˜ ๊ฐ’์€ ์ ˆ๋Œ€๋กœ ์žฌ์ •์˜ํ•˜์ง€ ๋ง์ž

C++ ํ”„๋กœ๊ทธ๋ž˜๋จธ์˜ ํ•„๋…์„œ์ด์ž ๋ฐ”์ด๋ธ”์ธ, ์Šค์ฝง ๋งˆ์ด์–ด์Šค์˜ Modern Effective C++ ๋ฅผ ์ฝ๊ณ  ๊ธฐ์–ตํ•  ๋‚ด์šฉ์„ ์š”์•ฝํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ๊ผญ ์ฝ์–ด๋ณด์‹œ๊ธธ ์ถ”์ฒœ๋“œ๋ฆฝ๋‹ˆ๋‹ค! ํ•ญ๋ชฉ 37 : ์–ด๋–ค ํ•จ์ˆ˜์— ๋Œ€ํ•ด์„œ๋„ ์ƒ์†๋ฐ›์€ ๊ธฐ๋ณธ ๋งค๊ฐœ๋ณ€์ˆ˜ ๊ฐ’์€ ์ ˆ๋Œ€๋กœ ์žฌ์ •์˜ํ•˜์ง€ ๋ง์ž ํ•ต์‹ฌ : ์ƒ์†๋ฐ›์€ ๊ธฐ๋ณธ ๋งค๊ฐœ๋ณ€์ˆ˜ ๊ฐ’์€ ์ ˆ๋Œ€๋กœ ์žฌ์ •์˜ํ•ด์„œ๋Š” ์•ˆ ๋œ๋‹ค. ์™œ๋ƒํ•˜๋ฉด ๊ธฐ๋ณธ ๋งค๊ฐœ๋ณ€์ˆ˜ ๊ฐ’์€ ์ •์ ์œผ๋กœ ๋ฐ”์ธ๋”ฉ๋˜๋Š” ๋ฐ˜๋ฉด, ๊ฐ€์ƒ ํ•จ์ˆ˜(์˜ค๋ฒ„๋ผ์ด๋“œ ๊ฐ€๋Šฅํ•œ ์œ ์ผํ•œ ํ•จ์ˆ˜)๋Š” ๋™์ ์œผ๋กœ ๋ฐ”์ธ๋”ฉ๋˜๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค. ์•„๋ž˜ ์˜ˆ์‹œ๋ฅผ ๋ณด์ž. class Shape { public: enum ShapeColor { Red, Green, Blue }; // ๋ชจ๋“  ๋„ํ˜•์€ ์ž๊ธฐ ์ž์‹ ์„ ๊ทธ๋ฆฌ๋Š” ํ•จ์ˆ˜๋ฅผ ์ œ๊ณตํ•ด์•ผ ํ•จ virtual void draw(ShapeColor color = Red) ..

Tutorials/C++ : Advanced 2022. 10. 25. 16:28
Effective C++ | ํ•ญ๋ชฉ 36 : ์ƒ์†๋ฐ›์€ ๋น„๊ฐ€์ƒ ํ•จ์ˆ˜๋ฅผ ํŒŒ์ƒ ํด๋ž˜์Šค์—์„œ ์žฌ์ •์˜ํ•˜๋Š” ๊ฒƒ์€ ์ ˆ๋Œ€ ๊ธˆ๋ฌผ!

C++ ํ”„๋กœ๊ทธ๋ž˜๋จธ์˜ ํ•„๋…์„œ์ด์ž ๋ฐ”์ด๋ธ”์ธ, ์Šค์ฝง ๋งˆ์ด์–ด์Šค์˜ Modern Effective C++ ๋ฅผ ์ฝ๊ณ  ๊ธฐ์–ตํ•  ๋‚ด์šฉ์„ ์š”์•ฝํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ๊ผญ ์ฝ์–ด๋ณด์‹œ๊ธธ ์ถ”์ฒœ๋“œ๋ฆฝ๋‹ˆ๋‹ค! ํ•ญ๋ชฉ 36 : ์ƒ์†๋ฐ›์€ ๋น„๊ฐ€์ƒ ํ•จ์ˆ˜๋ฅผ ํŒŒ์ƒ ํด๋ž˜์Šค์—์„œ ์žฌ์ •์˜ํ•˜๋Š” ๊ฒƒ์€ ์ ˆ๋Œ€ ๊ธˆ๋ฌผ! ํ•ต์‹ฌ : ์ƒ์†๋ฐ›์€ ๋น„๊ฐ€์ƒ ํ•จ์ˆ˜๋ฅผ ์žฌ์ •์˜ํ•˜๋Š” ์ผ์€ ์ ˆ๋Œ€๋กœ ํ•˜์ง€ ๋ง์ž ์‚ฌ์‹ค ์ด ํ•ญ๋ชฉ์€ ๋‹น์—ฐํ•˜๋‹ค๋ฉด ๋‹น์—ฐํ•œ๋ฐ, ๋น„๊ฐ€์ƒ ํ•จ์ˆ˜๋ฅผ ์ƒ์†๋ฐ›๋Š”๋‹ค๋Š” ๊ฒƒ์€ ๊ธฐ๋ฐ˜ ํด๋ž˜์Šค์˜ ์ธํ„ฐํŽ˜์ด์Šค์™€ ๊ตฌํ˜„์„ ๋ชจ๋‘ ๋ฌผ๋ ค๋ฐ›๋Š”๋‹ค๋Š” ๋œป์ด๋ฏ€๋กœ ํŒŒ์ƒํด๋ž˜์Šค์—์„œ ์žฌ์ •์˜ํ•œ๋‹ค๋Š”๊ฒŒ ์ด๋ก ์ ์œผ๋กœ๋„ ๋ชจ์ˆœ๋˜๊ฒŒ ๋œ๋‹ค. ํ•ด๋‹น ๊ธฐ๋ฐ˜ ํด๋ž˜์Šค๋ฅผ ๋ฌผ๋ ค๋ฐ›์€ ํด๋ž˜์Šค๋Š” ํ•ด๋‹น ๋น„๊ฐ€์ƒ ํด๋ž˜์Šค๋ฅผ ํ˜ธ์ถœํ•  ๋•Œ ๊ธฐ๋ฐ˜ ํด๋ž˜์Šค์—์„œ ์˜๋„ํ•œ ๋น„๊ฐ€์ƒ ํ•จ์ˆ˜์˜ ๋™์ž‘์„ ๊ทธ๋Œ€๋กœ ์žฌํ˜„ํ•ด์•ผ ํ•˜๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค! ์˜ˆ์‹œ๋ฅผ ํ•˜๋‚˜ ๋ณด์ž. class B { public: void m..

Tutorials/C++ : Advanced 2022. 10. 25. 16:28
Effective C++ | ํ•ญ๋ชฉ 35 : ๊ฐ€์ƒ ํ•จ์ˆ˜ ๋Œ€์‹  ์“ธ ๊ฒƒ๋“ค๋„ ์ƒ๊ฐํ•ด ๋‘๋Š” ์ž์„ธ๋ฅผ ์‹œ์‹œ๋•Œ๋•Œ๋กœ ๊ธธ๋Ÿฌ ๋‘์ž

C++ ํ”„๋กœ๊ทธ๋ž˜๋จธ์˜ ํ•„๋…์„œ์ด์ž ๋ฐ”์ด๋ธ”์ธ, ์Šค์ฝง ๋งˆ์ด์–ด์Šค์˜ Modern Effective C++ ๋ฅผ ์ฝ๊ณ  ๊ธฐ์–ตํ•  ๋‚ด์šฉ์„ ์š”์•ฝํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ๊ผญ ์ฝ์–ด๋ณด์‹œ๊ธธ ์ถ”์ฒœ๋“œ๋ฆฝ๋‹ˆ๋‹ค! ํ•ญ๋ชฉ 35 : ๊ฐ€์ƒ ํ•จ์ˆ˜ ๋Œ€์‹  ์“ธ ๊ฒƒ๋“ค๋„ ์ƒ๊ฐํ•ด ๋‘๋Š” ์ž์„ธ๋ฅผ ์‹œ์‹œ๋•Œ๋•Œ๋กœ ๊ธธ๋Ÿฌ ๋‘์ž ํ•ต์‹ฌ : 1. ๊ฐ€์ƒ ํ•จ์ˆ˜ ๋Œ€์‹ ์— ์“ธ ์ˆ˜ ์žˆ๋Š” ๋‹ค๋ฅธ ๋ฐฉ๋ฒ•์œผ๋กœ NVI ๊ด€์šฉ๊ตฌ ๋ฐ ์ „๋žต ํŒจํ„ด์„ ๋“ค ์ˆ˜ ์žˆ๋‹ค. ์ด ์ค‘ NVI ๊ด€์šฉ๊ตฌ๋Š” ๊ทธ ์ž์ฒด๊ฐ€ ํ…œํ”Œ๋ฆฟ ๋ฉ”์„œ๋“œ ํŒจํ„ด์˜ ํ•œ ์˜ˆ์ด๋‹ค. 2. ๊ฐ์ฒด์— ํ•„์š”ํ•œ ๊ธฐ๋Šฅ์„ ๋ฉค๋ฒ„ ํ•จ์ˆ˜๋กœ๋ถ€ํ„ฐ ํด๋ž˜์Šค ์™ธ๋ถ€์˜ ๋น„๋ฉค๋ฒ„ ํ•จ์ˆ˜๋กœ ์˜ฎ๊ธฐ๋ฉด, ๊ทธ ๋น„๋ฉค๋ฒ„ ํ•จ์ˆ˜๋Š” ๊ทธ ํด๋ž˜์Šค์˜ public ๋ฉค๋ฒ„๊ฐ€ ์•„๋‹Œ ๊ฒƒ๋“ค์„ ์ ‘๊ทผํ•  ์ˆ˜ ์—†๋‹ค๋Š” ๋‹จ์ ์ด ์ƒ๊ธด๋‹ค. 3. std::function ๊ฐ์ฒด๋Š” ์ผ๋ฐ˜ํ™”๋œ ํ•จ์ˆ˜ ํฌ์ธํ„ฐ์ฒ˜๋Ÿผ ๋™์ž‘ํ•œ๋‹ค. ์ด ๊ฐ์ฒด๋Š” ์ฃผ์–ด์ง„ ๋Œ€์ƒ ์‹œ๊ทธ๋‹ˆ์ฒ˜์™€ ํ˜ธํ™˜๋˜๋Š”..

Tutorials/C++ : Advanced 2022. 10. 25. 16:28
Effective C++ | ํ•ญ๋ชฉ 34 : ์ธํ„ฐํŽ˜์ด์Šค ์ƒ์†๊ณผ ๊ตฌํ˜„ ์ƒ์†์˜ ์ฐจ์ด๋ฅผ ์ œ๋Œ€๋กœ ํŒŒ์•…ํ•˜๊ณ  ๊ตฌ๋ณ„ํ•˜์ž

C++ ํ”„๋กœ๊ทธ๋ž˜๋จธ์˜ ํ•„๋…์„œ์ด์ž ๋ฐ”์ด๋ธ”์ธ, ์Šค์ฝง ๋งˆ์ด์–ด์Šค์˜ Modern Effective C++ ๋ฅผ ์ฝ๊ณ  ๊ธฐ์–ตํ•  ๋‚ด์šฉ์„ ์š”์•ฝํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ๊ผญ ์ฝ์–ด๋ณด์‹œ๊ธธ ์ถ”์ฒœ๋“œ๋ฆฝ๋‹ˆ๋‹ค! ํ•ญ๋ชฉ 34 : ์ธํ„ฐํŽ˜์ด์Šค ์ƒ์†๊ณผ ๊ตฌํ˜„ ์ƒ์†์˜ ์ฐจ์ด๋ฅผ ์ œ๋Œ€๋กœ ํŒŒ์•…ํ•˜๊ณ  ๊ตฌ๋ณ„ํ•˜์ž ํ•ต์‹ฌ : 1. ์ธํ„ฐํŽ˜์ด์Šค ์ƒ์†์€ ๊ตฌํ˜„ ์ƒ์†๊ณผ ๋‹ค๋ฅด๋‹ค. public ์ƒ์†์—์„œ, ํŒŒ์ƒ ํด๋ž˜์Šค๋Š” ํ•ญ์ƒ ๊ธฐ๋ณธ ํด๋ž˜์Šค์˜ ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ๋ชจ๋‘ ๋ฌผ๋ ค๋ฐ›๋Š”๋‹ค. 2. ์ˆœ์ˆ˜ ๊ฐ€์ƒ ํ•จ์ˆ˜๋Š” ์ธํ„ฐํŽ˜์ด์Šค ์ƒ์†๋งŒ์„ ํ—ˆ์šฉํ•œ๋‹ค. 3. ๋‹จ์ˆœ(๋น„์ˆœ์ˆ˜) ๊ฐ€์ƒ ํ•จ์ˆ˜๋Š” ์ธํ„ฐํŽ˜์ด์Šค ์ƒ์†๊ณผ ๋”๋ถˆ์–ด ๊ธฐ๋ณธ ๊ตฌํ˜„์˜ ์ƒ์†๋„ ๊ฐ€๋Šฅํ•˜๋„๋ก ์ง€์ •ํ•œ๋‹ค. 4. ๋น„๊ฐ€์ƒ ํ•จ์ˆ˜๋Š” ์ธํ„ฐํŽ˜์ด์Šค ์ƒ์†๊ณผ ๋”๋ถˆ์–ด ํ•„์ˆ˜ ๊ตฌํ˜„์˜ ์ƒ์†๋„ ๊ฐ€ํ•˜๋„๋ก ์ง€์ •ํ•œ๋‹ค. ํด๋ž˜์Šค ์„ค๊ณ„์ž์˜ ์ž…์žฅ์—์„œ, ๋ฉค๋ฒ„ ํ•จ์ˆ˜์˜ ์ธํ„ฐํŽ˜์ด์Šค(์„ ์–ธ)๋งŒ์„ ํŒŒ์ƒ ํด๋ž˜์Šค์— ์ƒ์†๋ฐ›๊ณ  ์‹ถ์„ ๋•Œ..

Tutorials/C++ : Advanced 2022. 10. 25. 16:27
Effective C++ | ํ•ญ๋ชฉ 33 : ์ƒ์†๋œ ์ด๋ฆ„์„ ์ˆจ๊ธฐ๋Š” ์ผ์€ ํ”ผํ•˜์ž

C++ ํ”„๋กœ๊ทธ๋ž˜๋จธ์˜ ํ•„๋…์„œ์ด์ž ๋ฐ”์ด๋ธ”์ธ, ์Šค์ฝง ๋งˆ์ด์–ด์Šค์˜ Modern Effective C++ ๋ฅผ ์ฝ๊ณ  ๊ธฐ์–ตํ•  ๋‚ด์šฉ์„ ์š”์•ฝํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ๊ผญ ์ฝ์–ด๋ณด์‹œ๊ธธ ์ถ”์ฒœ๋“œ๋ฆฝ๋‹ˆ๋‹ค! ํ•ญ๋ชฉ 33 : ์ƒ์†๋œ ์ด๋ฆ„์„ ์ˆจ๊ธฐ๋Š” ์ผ์€ ํ”ผํ•˜์ž ํ•ต์‹ฌ : 1. ํŒŒ์ƒ ํด๋ž˜์Šค์˜ ์ด๋ฆ„์€ ๊ธฐ๋ณธ ํด๋ž˜์Šค์˜ ์ด๋ฆ„์„ ๊ฐ€๋ฆฐ๋‹ค. public ์ƒ์†์—์„œ๋Š” ์ด๋Ÿฐ ์ด๋ฆ„ ๊ฐ€๋ฆผ ํ˜„์ƒ์€ ๋ฐ”๋žŒ์งํ•˜์ง€ ์•Š๋‹ค. 2. ๊ฐ€๋ ค์ง„ ์ด๋ฆ„์„ ๋‹ค์‹œ ๋ณผ ์ˆ˜ ์žˆ๊ฒŒ ํ•˜๋Š” ๋ฐฉ๋ฒ•์œผ๋กœ, using ์„ ์–ธ ํ˜น์€ ์ „๋‹ฌ ํ•จ์ˆ˜๋ฅผ ์“ธ ์ˆ˜ ์žˆ๋‹ค. ๋‹ค์Œ ์˜ˆ์‹œ ์ฝ”๋“œ๋ฅผ ๋ณด์ž. class Base { private: int x; public: virtual void mf1() = 0; virtual void mf1(int); virtual void mf2(); void mf3(); void mf3(double); ..

Tutorials/C++ : Advanced 2022. 10. 25. 16:27
Effective C++ | ํ•ญ๋ชฉ 32 : public ์ƒ์† ๋ชจํ˜•์€ ๋ฐ˜๋“œ์‹œ "is-a(...๋Š” ...์˜ ์ผ์ข…์ด๋‹ค)"๋ฅผ ๋”ฐ๋ฅด๋„๋ก ๋งŒ๋“ค์ž

C++ ํ”„๋กœ๊ทธ๋ž˜๋จธ์˜ ํ•„๋…์„œ์ด์ž ๋ฐ”์ด๋ธ”์ธ, ์Šค์ฝง ๋งˆ์ด์–ด์Šค์˜ Modern Effective C++ ๋ฅผ ์ฝ๊ณ  ๊ธฐ์–ตํ•  ๋‚ด์šฉ์„ ์š”์•ฝํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ๊ผญ ์ฝ์–ด๋ณด์‹œ๊ธธ ์ถ”์ฒœ๋“œ๋ฆฝ๋‹ˆ๋‹ค! ํ•ญ๋ชฉ 32 : public ์ƒ์† ๋ชจํ˜•์€ ๋ฐ˜๋“œ์‹œ "is-a(...๋Š” ...์˜ ์ผ์ข…์ด๋‹ค)"๋ฅผ ๋”ฐ๋ฅด๋„๋ก ๋งŒ๋“ค์ž ํ•ต์‹ฌ : public ์ƒ์†์˜ ์˜๋ฏธ๋Š” "is-a(...๋Š” ...์˜ ์ผ์ข…)"์ด๋‹ค. ๊ธฐ๋ณธ ํด๋ž˜์Šค์— ์ ์šฉ๋˜๋Š” ๋ชจ๋“  ๊ฒƒ๋“ค์ด ํŒŒ์ƒ ํด๋ž˜์Šค์— ๊ทธ๋Œ€๋กœ ์ ์šฉ๋˜์–ด์•ผ ํ•œ๋‹ค. ์™œ๋ƒํ•˜๋ฉด ๋ชจ๋“  ํŒŒ์ƒ ํด๋ž˜์Šค ๊ฐ์ฒด๋Š” ๊ธฐ๋ณธ ํด๋ž˜์Šค ๊ฐ์ฒด์˜ ์ผ์ข…์ด๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค. ์–ด๋–ค Base ํด๋ž˜์Šค๋กœ๋ถ€ํ„ฐ Derived ํด๋ž˜์Šค๊ฐ€ public ์ƒ์†์„ ๋ฐ›์•˜๋‹ค๋ฉด, Derived ํด๋ž˜์Šค๋Š” Base ํด๋ž˜์Šค๋ณด๋‹ค ๋” ํŠน์ˆ˜ํ•œ ๊ฐœ๋…์„ ๋‚˜ํƒ€๋‚ด๊ฒŒ ๋œ๋‹ค. ์‚ฌ์šฉ์ฒ˜๊ฐ€ ์ œํ•œ๋œ๋‹ค๊ณ  ๋ด๋„ ์ข‹๋‹ค. public ์ƒ์†์ด ์‹ ๊ธฐ..

Tutorials/C++ : Advanced 2022. 10. 25. 16:26