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

๐Ÿ—ฃ๏ธ ์‹ ์ž… ์ธํ„ฐ๋ทฐ/C++

(10)
์‹ ์ž… ๊ฐœ๋ฐœ์ž ๊ธฐ์ˆ ๋ฉด์ ‘ C++ : strcpy, strcat, strlen, atoI strcpy ํ•จ์ˆ˜๋Š” ํ•œ ๋ฌธ์ž์—ด์„ ๋‹ค๋ฅธ ๋ฌธ์ž์—ด๋กœ ๋ณต์‚ฌํ•ฉ๋‹ˆ๋‹ค. ์ฃผ์˜ํ•ด์•ผ ํ•  ์ ์€ ๋Œ€์ƒ ๋ฌธ์ž์—ด์ด ์ถฉ๋ถ„ํ•œ ํฌ๊ธฐ๋ฅผ ๊ฐ€์ ธ์•ผ ํ•˜๋ฉฐ, ๋์— NULL ๋ฌธ์ž (\0) ๋ฅผ ํฌํ•จํ•ด์•ผ ํ•œ๋‹ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. char* StrCpy(char* dest, const char* src){ char* ret = dest; while(*src){ *dest = *src; dest++; src++; } *dest = '\0'; return ret; } strcat ํ•จ์ˆ˜๋Š” ํ•œ ๋ฌธ์ž์—ด์˜ ๋์— ๋‹ค๋ฅธ ๋ฌธ์ž์—ด์„ ๋ถ™์ž…๋‹ˆ๋‹ค. ์ด ํ•จ์ˆ˜๋ฅผ ๊ตฌํ˜„ํ•  ๋•Œ์—๋„ ๋Œ€์ƒ ๋ฌธ์ž์—ด์— ์ถฉ๋ถ„ํ•œ ๊ณต๊ฐ„์ด ์žˆ์–ด์•ผ ํ•˜๋ฉฐ, ์ฒซ ๋ฒˆ์งธ ๋ฌธ์ž์—ด์˜ ๋์—์„œ ์‹œ์ž‘ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. char* StrCat(char* dest, const char* src){ chart* ret = dest; while(..
์‹ ์ž… ๊ฐœ๋ฐœ์ž ๊ธฐ์ˆ ๋ฉด์ ‘ C++ : Cast ์—ฐ์‚ฐ์ž (๐Ÿ†š C) Dynamic_cast๊ฐ€ ๋‚ด๋ถ€์ ์œผ๋กœ ์—…, ๋‹ค์šด ์บ์ŠคํŒ…์ด ๊ฐ€๋Šฅํ•œ์ง€ ๊ฒ€์‚ฌํ•ด ์ค€๋‹ค๊ณ  ํ–ˆ๋Š”๋ฐ, C++์—์„œ C#์ฒ˜๋Ÿผ ๋ฆฌํ”Œ๋ ‰์…˜์ด ์—†๋Š”๋ฐ ์–ด๋–ป๊ฒŒ ๊ฐ€๋Šฅํ•œ๊ฐ€? ๊ฐ€์ƒํ•จ์ˆ˜ ํ…Œ์ด๋ธ”์„ ์ด์šฉํ•˜์—ฌ ์บ์ŠคํŒ…์ด ๊ฐ€๋Šฅํ•œ ์ž๋ฃŒ์ธ์ง€ ๊ฒ€์‚ฌํ•ฉ๋‹ˆ๋‹ค. C์—์„œ๋Š” ์ผ๋ฐ˜์ ์œผ๋กœ (ํƒ€์ž…)๋ณ€์ˆ˜ ํ˜•์‹์„ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. ์ด ์บ์ŠคํŒ… ๋ฐฉ์‹์€ ํƒ€์ž… ์•ˆ์ „์„ฑ์„ ์ œ๊ณตํ•˜์ง€ ์•Š์œผ๋ฉฐ, ์–ด๋– ํ•œ ํƒ€์ž…์˜ ๋ณ€ํ™˜๋„ ๊ฐ•์ œํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. C ์บ์ŠคํŒ…์€ ์ปดํŒŒ์ผ๋Ÿฌ๊ฐ€ ํƒ€์ž… ์˜ค๋ฅ˜๋ฅผ ์žก์•„๋‚ด์ง€ ๋ชปํ•  ์ˆ˜ ์žˆ์–ด ๋ฒ„๊ทธ๊ฐ€ ๋ฐœ์ƒํ•˜๊ธฐ ์‰ฝ์Šต๋‹ˆ๋‹ค. int i = 3; double d = 3.5; cout ๊ฐ•์ œ ์บ์ŠคํŒ…์„ ์‚ฌ์šฉํ•˜๋ฉด ๋Ÿฐํƒ€์ž„์‹œ seg fault, runtime error ๋“ฑ ์˜ˆ๊ธฐ์น˜ ๋ชปํ•œ ์—๋Ÿฌ๋ฅผ ๋ฐœ์ƒ์‹œํ‚ฌ ์ˆ˜ ์žˆ๋Š”๋ฐ ์ปดํŒŒ์ผ๋Ÿฌ๋”ด์—์„œ ์˜ค๋ฅ˜๋ฅผ ์žก์•„ ์ถ”ํ›„ ๋ฌธ์ œ๊ฐ€ ๋  ๊ฐ€๋Šฅ์„ฑ์„ ์ค„์—ฌ์ฃผ๋Š” ์ด์ ์„ ๊ฐ€์ง€๊ณ  ์žˆ๋‹ค. ์ƒ์†๊ด€๊ณ„์— ์žˆ์–ด..
์‹ ์ž… ๊ฐœ๋ฐœ์ž ๊ธฐ์ˆ ๋ฉด์ ‘ C++ ์†์ฝ”๋”ฉ : Array, Vector, List, Stack, Queue, Tree, Heap, Hash ๋ชจ๋“ˆ ์—†์ด ๊ตฌํ˜„ 1. Vector, List, Map ์— ๋Œ€ํ•ด์„œ ์„ค๋ช…ํ•ด ๋ณด์„ธ์š”. stl์— ๋“ฑ๋ก๋˜์–ด ์žˆ๋Š” ์ž๋ฃŒ๊ตฌ์กฐ๋“ค๋กœ์„œ vector๋Š” ๋™์ ๋ฐฐ์—ด๋กœ ์ด๋ฃจ์–ด์ ธ ์žˆ์œผ๋ฉฐ, List๋Š” ๋”๋ธ”๋งํฌ๋“œ ๋ฆฌ์ŠคํŠธ๋กœ ์ด๋ฃจ์–ด์ ธ์žˆ์Šต๋‹ˆ๋‹ค. Map์„ Key์™€ Value๋ฅผ ์Œ์œผ๋กœ ์ด๋ฃจ๋ฉฐ ๋ ˆ๋“œ๋ธ”๋ž™ํŠธ๋ฆฌ ์•Œ๊ณ ๋ฆฌ์ฆ˜์œผ๋กœ ์ด๋ฃจ์–ด์ ธ ์žˆ์–ด์„œ ๋น ๋ฅธ ํƒ์ƒ‰์†๋„๋ฅผ ์ž๋ž‘ํ•ฉ๋‹ˆ๋‹ค. 2. Vector, List ์˜ ์ฐจ์ด์— ๋Œ€ํ•ด์„œ ์„ค๋ช…ํ•˜์„ธ์š”. vector๋Š” ๋™์ ๋ฐฐ์—ด์˜ ํด๋ž˜์Šค ํƒฌํ”Œ๋ฆฟ์ด๋ผ๊ณ  ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. vector๊ฐ์ฒด๋Š” ์š”์†Œ๊ฐ€ ์ถ”๊ฐ€๋˜๊ฑฐ๋‚˜ ์‚ญ์ œ๋  ๋•Œ๋งˆ๋‹ค ์ž๋™์œผ๋กœ ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ์žฌํ• ๋‹นํ•˜์—ฌ ํฌ๊ธฐ๋ฅผ ๋™์ ์œผ๋กœ ๋ณ€๊ฒฝํ•ฉ๋‹ˆ๋‹ค. list๋Š” ์ด์ค‘์—ฐ๊ฒฐ๋ฆฌ์ŠคํŠธ์˜ ํด๋ž˜์Šค ํƒฌํ”Œ๋ฆฟ์ด๋ผ๊ณ  ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด ์ปจํ…Œ์ด๋„ˆ๋Š” ๋ชจ๋“  ์š”์†Œ์—์„œ ์–‘๋ฐฉํ–ฅ ์ ‘๊ทผ, ๋น ๋ฅธ ์‚ฝ์ž…๊ณผ ์‚ญ์ œ๋ฅผ ํ•  ์ˆ˜ ์žˆ์ง€๋งŒ, ์ž„์˜ ์ ‘๊ทผ์€ ๋ถˆ๊ฐ€ํ•ฉ๋‹ˆ๋‹ค. ๋˜ํ•œ ๋ฆฌ..
์‹ ์ž… ๊ฐœ๋ฐœ์ž ๊ธฐ์ˆ ๋ฉด์ ‘ C++ : ์Šค๋งˆํŠธ ํฌ์ธํ„ฐ (๐Ÿ†šGC) ๐Ÿ“ŒRAII ํŒจํ„ด ์ด๋ž€? RAII (Resource Acquisition Is Initialization)๋Š” C++์—์„œ ์ž์ฃผ ์‚ฌ์šฉ๋˜๋Š” ํ”„๋กœ๊ทธ๋ž˜๋ฐ ๊ธฐ๋ฒ•์œผ๋กœ, ๊ฐ์ฒด์˜ ์ƒ๋ช…์ฃผ๊ธฐ์™€ ์ž์› ๊ด€๋ฆฌ๋ฅผ ๊ด€๋ จ์ง“๋Š” ๋ฐฉ๋ฒ•๋ก ์ž…๋‹ˆ๋‹ค. ์ด ํŒจํ„ด์˜ ํ•ต์‹ฌ ์•„์ด๋””์–ด๋Š” ์ž์›์˜ ํ• ๋‹น๊ณผ ์ดˆ๊ธฐํ™”๋ฅผ ๊ฐ์ฒด์˜ ์ƒ์„ฑ๊ณผ ๊ฒฐ๋ถ€์‹œํ‚ค๊ณ , ์ž์›์˜ ํ•ด์ œ๋ฅผ ๊ฐ์ฒด์˜ ์†Œ๋ฉธ๊ณผ ์—ฐ๊ฒฐํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. RAII๋Š” C++์˜ ์Šค๋งˆํŠธ ํฌ์ธํ„ฐ ์™€ ๊ฐ™์€ ํ‘œ์ค€ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ๊ตฌ์„ฑ ์š”์†Œ์—์„œ ๋„๋ฆฌ ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค. ์ด๋“ค ์Šค๋งˆํŠธ ํฌ์ธํ„ฐ๋Š” ์ž๋™์œผ๋กœ ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ๊ด€๋ฆฌํ•˜์—ฌ ๊ฐœ๋ฐœ์ž๊ฐ€ ์ˆ˜๋™์œผ๋กœ new์™€ delete๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ๊ด€๋ฆฌํ•˜๋Š” ๋ณต์žก์„ฑ์„ ์ค„์—ฌ์ค๋‹ˆ๋‹ค. ๐Ÿ“Œ์Šค๋งˆํŠธ ํฌ์ธํ„ฐ๋ž€? #include ํ—ค๋”๋กœ ์‚ฌ์šฉ์ด ๊ฐ€๋Šฅํ•˜๋‹ค. C++ ํ”„๋กœ๊ทธ๋žจ์—์„œ new ํ‚ค์›Œ๋“œ๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด, delete๋กœ ํ•ด์ œํ•  ์ˆ˜ ์žˆ๋‹ค. C++์€ ๋ฉ”..