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

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

KoreanFoodie's Study

Effective C++ | ํ•ญ๋ชฉ 44 : ๋งค๊ฐœ๋ณ€์ˆ˜์— ๋…๋ฆฝ์ ์ธ ์ฝ”๋“œ๋Š” ํ…œํ”Œ๋ฆฟ์œผ๋กœ๋ถ€ํ„ฐ ๋ถ„๋ฆฌ์‹œํ‚ค์ž

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

Tutorials/C++ : Advanced 2022. 10. 25. 16:31
Effective C++ | ํ•ญ๋ชฉ 43 : ํ…œํ”Œ๋ฆฟ์œผ๋กœ ๋งŒ๋“ค์–ด์ง„ ๊ธฐ๋ณธ ํด๋ž˜์Šค ์•ˆ์˜ ์ด๋ฆ„์— ์ ‘๊ทผํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ์•Œ์•„ ๋‘์ž

C++ ํ”„๋กœ๊ทธ๋ž˜๋จธ์˜ ํ•„๋…์„œ์ด์ž ๋ฐ”์ด๋ธ”์ธ, ์Šค์ฝง ๋งˆ์ด์–ด์Šค์˜ Modern Effective C++ ๋ฅผ ์ฝ๊ณ  ๊ธฐ์–ตํ•  ๋‚ด์šฉ์„ ์š”์•ฝํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ๊ผญ ์ฝ์–ด๋ณด์‹œ๊ธธ ์ถ”์ฒœ๋“œ๋ฆฝ๋‹ˆ๋‹ค! ํ•ญ๋ชฉ 43 : ํ…œํ”Œ๋ฆฟ์œผ๋กœ ๋งŒ๋“ค์–ด์ง„ ๊ธฐ๋ณธ ํด๋ž˜์Šค ์•ˆ์˜ ์ด๋ฆ„์— ์ ‘๊ทผํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ์•Œ์•„ ๋‘์ž ํ•ต์‹ฌ : ํŒŒ์ƒ ํด๋ž˜์Šค ํ…œํ”Œ๋ฆฟ์—์„œ ๊ธฐ๋ณธ ํด๋ž˜์Šค ํ…œํ”Œ๋ฆฟ์˜ ์ด๋ฆ„์„ ์ฐธ์กฐํ•  ๋•Œ๋Š”, "this->" ๋ฅผ ์ ‘๋‘์‚ฌ๋กœ ๋ถ™์ด๊ฑฐ๋‚˜ ๊ธฐ๋ณธ ํด๋ž˜์Šค ํ•œ์ •๋ฌธ์„ ๋ช…์‹œ์ ์œผ๋กœ ์จ ์ฃผ๋Š” ๊ฒƒ์œผ๋กœ ํ•ด๊ฒฐํ•˜์ž ํ…œํ”Œ๋ฆฟ ํด๋ž˜์Šค ์ƒ์†ํ•˜๋Š” ๋‹ค์Œ ์˜ˆ์ œ ์ฝ”๋“œ๋ฅผ ๋ณด์ž. class CompanyA { public: void sendCleartext(const std::string& msg); void sendEncrypted(const std::string& msg); }; // CompanyB, Compan..

Tutorials/C++ : Advanced 2022. 10. 25. 16:31
Effective C++ | ํ•ญ๋ชฉ 42 : typename ์˜ ๋‘ ๊ฐ€์ง€ ์˜๋ฏธ๋ฅผ ์ œ๋Œ€๋กœ ํŒŒ์•…ํ•˜์ž

C++ ํ”„๋กœ๊ทธ๋ž˜๋จธ์˜ ํ•„๋…์„œ์ด์ž ๋ฐ”์ด๋ธ”์ธ, ์Šค์ฝง ๋งˆ์ด์–ด์Šค์˜ Modern Effective C++ ๋ฅผ ์ฝ๊ณ  ๊ธฐ์–ตํ•  ๋‚ด์šฉ์„ ์š”์•ฝํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ๊ผญ ์ฝ์–ด๋ณด์‹œ๊ธธ ์ถ”์ฒœ๋“œ๋ฆฝ๋‹ˆ๋‹ค! ํ•ญ๋ชฉ 42 : typename ์˜ ๋‘ ๊ฐ€์ง€ ์˜๋ฏธ๋ฅผ ์ œ๋Œ€๋กœ ํŒŒ์•…ํ•˜์ž ํ•ต์‹ฌ : 1. ํ…œํ”Œ๋ฆฟ ๋งค๊ฐœ๋ณ€์ˆ˜๋ฅผ ์„ ์–ธํ•  ๋•Œ, class ๋ฐ typename ์€ ์„œ๋กœ ๋ฐ”๊พธ์–ด ์จ๋„ ๋ฌด๋ฐฉํ•˜๋‹ค. 2. ์ค‘์ฒฉ ์˜์กด ํƒ€์ž… ์ด๋ฆ„์„ ์‹๋ณ„ํ•˜๋Š” ์šฉ๋„์—๋Š” ๋ฐ˜๋“œ์‹œ typename ์„ ์‚ฌ์šฉํ•œ๋‹ค. ๋‹จ, ์ค‘์ฒฉ ์˜์กด ์ด๋ฆ„์ด ๊ธฐ๋ณธ ํด๋ž˜์Šค ๋ฆฌ์ŠคํŠธ์— ์žˆ๊ฑฐ๋‚˜ ๋ฉค๋ฒ„ ์ดˆ๊ธฐํ™” ๋ฆฌ์ŠคํŠธ ๋‚ด์˜ ๊ธฐ๋ณธ ํด๋ž˜์Šค ์‹๋ณ„์ž๋กœ ์žˆ๋Š” ๊ฒฝ์šฐ์—๋Š” ์˜ˆ์™ธ์ด๋‹ค. ์งˆ๋ฌธ : ์•„๋ž˜์˜ ๋‘ ํ…œํ”Œ๋ฆฟ ์„ ์–ธ๋ฌธ์— ์“ฐ์ธ class ์™€ typename ์˜ ์ฐจ์ด๋Š” ๋ฌด์—‡์ผ๊นŒ? template class Widget; template class Wi..

Tutorials/C++ : Advanced 2022. 10. 25. 16:30
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