๊ฒ์ ํด๋ผ์ด์ธํธ ํ๋ก๊ทธ๋๋จธ๊ฐ ์ค๋นํด์ผ ํ ์ค๋ฌด๋ฉด์ ๋ฆฌ์คํธ์ ๋๋ค.
์ทจ์ค ํ ๋ ๋ง๋ค์๋๊ฑด๋ฐ ๊ณต์ ํ๋ ค๊ณ ์ฌ๋ฆฝ๋๋ค.
์ค๋นํด์ผ ๋ ์์ญ์ ๊ฐ๋ตํ๊ฒ ๋น์ค๊ณผ ํจ๊ป ์ด์ผ๊ธฐํ๋ฉด,
1. C / C++ (40% ~ 60%)
2. ๊ทธ๋ํฝ์ค ๊ฐ๋ (20%)
3. ์ด์์ฒด์ (10%~20%)
4. ๋ฐ์ดํฐ๋ฒ ์ด์ค (10%)
5. ์๊ณ ๋ฆฌ์ฆ, ์๋ฃ๊ตฌ์กฐ (20%~30%) : ์ค๋ฌด๋ฉด์ ๊ธฐ์ค์ ๋๋ค.
์๊ณ ๋ฆฌ์ฆ๊ณผ ์๋ฃ๊ตฌ์กฐ๋ ์ฝ๋ฉํ ์คํธ๋ ๋น์ฐํ 100%์ด๊ณ
ํ๊ธฐ ํ ์คํธ๋ผ๋ฉด 50%๋ผ๊ณ ์๊ฐํ์๋ฉด ๋ ๊ฑฐ ๊ฐ์ต๋๋ค.
๋๋ตํ๋ ํ์์ผ๋ก ์ค๋นํ์ผ๋ ๊ณ ๋ คํด์ฃผ์ธ์.
์ฒซ๋ฒ์งธ C++๊ธฐ์ด ํ๋ก๊ทธ๋๋ฐ ๊ธฐ์ด ์์ ์ง๋ฌธ
1. C++์ ํน์ง์ ๋งํด์ฃผ์ธ์.
C++์ธ์ด๋ ๊ฐ์ฒด์งํฅ์ธ์ด๋ก 4๊ฐ์ง์ ํน์ง์ด ์์ต๋๋ค.
์ฒซ๋ฒ์งธ ๋คํ์ฑ์ ๋๋ค. ํ๋์ ๊ฐ์ฒด๊ฐ ์ฌ๋ฌ ๊ฐ์ง ํ์ ์ ๊ฐ์ง์ ์๋ ๊ฒ์ ์๋ฏธํฉ๋๋ค. ๊ด์ฉ์ ์ธ ๊ฐ๋ ์ ๋คํ์ฑ์ ๊ฐ์ ๋ชจ์์ ์ฝ๋๊ฐ ๋ค๋ฅธ ํ์๋ฅผ ํ๋ ๊ฒ์ ๋ํ๋ ๋๋ค.
๋๋ฒ์งธ ์บก์ํ์ ๋๋ค. ์บก์ํ๋ ๋น์ทํ ์์ฑ๊ณผ ๋ฉ์๋๋ฅผ ํ๋์ ํด๋์ค๋ก ๋ฌถ๋ ๊ฒ์ ๋งํฉ๋๋ค. ๊ทธ๋ฆฌ๊ณ ํด๋์ค ๋ด๋ถ๋ฅผ ์ธ๋ถ์ ๊ณต๊ฐํ์ง ์์์ผ๋ก์จ ์ธ๋ถ์์ ์ด ํด๋์ค๋ฅผ ๋ง์๋๋ก ์์ ํ๋ ์ผ์ ๋ชปํ๊ฒ ํฉ๋๋ค. ๋ฐ๋ผ์ ์ ๋ณด์๋์ด ๋ฐ์ด๋ฉ๋๋ค. ์๋ฅผ๋ค์ด ๋ฉค๋ฒ ๋ณ๊ฐ Private๊ฐ ์๋ public์ผ๋ก ๋์ด ์๋ค๋ฉด ๊ฐ์ฒด์ธ๋ถ์์ ๋ง์๋๋ก ๋ฉค๋ฒ ๋ณ์๋ฅผ ์์ ํ ์ ์๊ธฐ ๋๋ฌธ์ ๊ทธ ๋ฉค๋ฒ ๋ณ์๋ฅผ ์ด๊ณณ ์ ๊ณณ์์ ์ฐธ์กฐํ๊ฒ ๋๋ฉด์ ์ ์ง๋ณด์ํ๊ธฐ๊ฐ ์ด๋ ค์์ง๋๋ค.
์ธ๋ฒ์งธ ์์์ ๋๋ค. ๋ถ๋ชจ ํด๋์ค์ ๋ฉ์๋์ ํ๋๋ฅผ ์์ ํด๋์ค์์ ๊ทธ๋๋ก ๋ฌผ๋ ค ๋ฐ๋ ๊ฒ์ ์๋ฏธํฉ๋๋ค. ์์์ ํ์ฉํ๊ฒ ๋๋ฉด ์ฝ๋๊ฐ ์ฌํ์ฉ๋๊ธฐ ๋๋ฌธ์ ์์ฐ์ฑ์ ๋์ผ์ ์์ต๋๋ค. ์์์ ํด๋์ค์ ์ฌ์ฌ์ฉ๊ณผ ํ์ฅ์ ์ํด ์ฌ์ฉ๋ฉ๋๋ค.
๋ค๋ฒ์งธ ์ถ์ํ์ ๋๋ค. ์ด๋ค ์ค์ฒด๋ค์์ ๊ด์ฌ์ด ์๋ ๊ณตํต์ ์ธ ํน์ฑ์ ๋ฝ์๋ด์ด ํ๋์ ๋ถ๋ฅ๋ก ๋ง๋๋ ๊ฒ์ ๋งํฉ๋๋ค. ์ฆ ์ด๋ค ๊ฐ์ฒด๋ก๋ถํฐ ๊ณตํต์ ์ด๊ณ ๊ด์ฌ์๋ ๋ถ๋ถ๋ง์ ์ถ์ถํ์ฌ ํ ๊ณณ์ ๋ชจ์ ๋๋ ํด๋์ค๋ฅผ ๋ง ํฉ๋๋ค.
2. C++๊ณผ C์ธ์ด์ ์ฐจ์ด๋ฅผ ๋งํด์ฃผ์ธ์. (๊ฐ์ฒด์งํฅ์ธ์ด vs ์ ์ฐจ์งํฅ์ธ์ด)
์๋์ ์ธ ์ฐจ์ด์ ๋ํ ์ด์ ์ ๋ํด์ ๋ง์๋๋ฆฌ๊ฒ ์ต๋๋ค. C++์ด C์ธ์ด๋ณด๋ค ์๋์ ์ผ๋ก ๋๋ฆฝ๋๋ค. ๊ทธ ์ด์ ๋ ํ ํ๋ฆฟ์ด๋ ๊ฐ์ฒด ์งํฅ ์ธ์ด๊ฐ ์ ๊ณตํ๋ ๊ธฐ๋ฅ์์ ๋ฐ์ํฉ๋๋ค. ๊ฐ์ฒด์งํฅ ์ธ์ด์ ํน์ฑ์ ๋ฐ์ดํฐ ํ์ ๋ณํ์ด๋ ๋คํ์ฑ์ ๊ธฐ๋ฅ์ ์ง์ํ๊ธฐ ์ํด ๋ค์์ ๋ฉ๋ชจ๋ฆฌ ํ ์ด๋ธ์ ์ถ๊ฐํฉ๋๋ค. ๊ฒฐ๊ณผ์ ์ผ๋ก ๋ ๋ง์ ๋ฉ๋ชจ๋ฆฌ๊ฐ ํ์ํ๋ฉฐ, ๋ํ ๋ฉ๋ชจ๋ฆฌ ๊ด๋ฆฌํ๋ ๊ธฐ๋ฅ๋ค์ด ์ถ๊ฐ๋๋ค ๋ณด๋ ์ ๋ฐ์ ์ผ๋ก ๋๋ ค์ง๊ฒ ๋ฉ๋๋ค.
๊ทธ๋ฆฌ๊ณ ๊ฐ์ฒด๋ฅผ ์ด์ฉํ ์ถ๋ ฅ, ํจ์๋ฅผ ์ด์ฉํ ์ถ๋ ฅ์ด ๋ค๋ฅด๊ณ C++์ namespace ๊ฐ๋ ์ ์ฌ์ฉ๊ฐ๋ ์ ์ฌ์ฉํฉ๋๋ค. C๋ฅผ ๋ฐฐ์ธ ๋๋ ํํ ์๋ณ์์ ์ด๋ฆ์ ๊ฐ์ ์ ์๋ค๊ณ ๋ฐฐ์๋๋ค. ํ์ง๋ง C++์์๋ ์๋ณ์์ ์ด๋ฆ์ด ๊ฐ์ ์ ์์ต๋๋ค. ๋ง์ง๋ง์ผ๋ก ํ์ค ์ ์ถ๋ ฅ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๊ฐ ๋ค๋ฆ ๋๋ค.
3. ์ถ์ ํด๋์ค์ ์ธํฐํ์ด์ค์ ์ฐจ์ด๋ ๋ฌด์์ธ๊ฐ์?
์ถ์ํด๋์ค๋ ์์ ๊ฐ์ํจ์๋ฅผ ํ๋ ์ด์ ๊ฐ๊ณ ์๋ ํด๋์ค์ ๋๋ค.
์ถ์ํด๋์ค๊ฐ ๋๋ฉด ์ธ์คํด์ค๋ฅผ ๋ง๋ค์ ์๊ฒ ๋ฉ๋๋ค. ๋ค๋ฅธ ์์ ํด๋์ค๋ฅผ ํ์์์ผ ๋ชจ๋ ์์ ๋ฉค๋ฒ ๊ฐ์ํจ์๋ฅผ ์ค๋ฒ๋ผ์ด๋ฉํ๋ฉด ํด๋น ์์ ํด๋์ค๋ถํฐ ์ธ์คํด์ค๋ฅผ ๋ค์ ์์ฑํ ์ ์์ต๋๋ค.
์ฆ, ์ถ์ํด๋์ค๋ ๋ง ๊ทธ๋๋ก ์ถ์์ ์ธ ํํ๋ง ์ ์ํ๊ณ ์ค์ ๊ตฌํ์ ์์ ํด๋์ค๋ก ๋ฏธ๋ฃจ๊ธฐ ์ํ ์ฉ๋์ ๋๋ค.
์ถ์ ํด๋์ค๋ ์์ฑ์ ๋ฉค๋ฒ๋ณ์ ์ผ๋ฐ ๋ฉ์๋๋ฅผ ์์ ๋กญ๊ฒ ํฌํจํ ์ ์์ผ๋ฉฐ, ์ฌ๊ธฐ 1๊ฐ ์ด์์ ์ถ์ ๋ฉ์๋๊ฐ ํฌํจ๋์ด์ ธ ์์ผ๋ฉด ๋ฉ๋๋ค. ๊ทธ๋ฌ๋ ์ธํฐํ์ด์ค๋‘์ถ์ ๋ฉ์๋’๋ง์ผ๋ก๋ง ์ด๋ฃจ์ด์ ธ ์๋ค๋ ์ฐจ์ด๊ฐ ์์ต๋๋ค.
4. ๊ฐ์ํจ์๋, ์์ ๊ฐ์ ํจ์๋?
virtual ํค์๋๋ฅผ ํจ์ ์์ ๋ถ์ด๋ฉด ๊ฐ์ํจ์๋ก ์ ์ธ์ด ๋ฉ๋๋ค. ์์ ํด๋์ค์์ ์ฌ์ ์ ํ ๊ฒ์ผ๋ก ๊ธฐ๋ํ๋ ๋ฉค๋ฒํจ์๋ฅผ ์๋ฏธํฉ๋๋ค. ์ด๋ฌํ ๊ฐ์ํจ์๋ ์์ ์ ํธ์ถํ๋ ๊ฐ์ฒด์ ๋์ ํ์ ์ ๋ฐ๋ผ ์ค์ ํธ์ถํ ํจ์๊ฐ ๊ฒฐ์ ์ด ๋ฉ๋๋ค. ์์ ๊ฐ์ ํจ์์ ๋ค๋ฅธ ์ ์ ํจ์์ ์ ์ธ ๋ด๋ถ ๊ตฌํ๊น์ง ์์ ํด๋์ค์๊ฒ ์ ๋ฌํ๊ธฐ ์ํ ํจ์์ ๋๋ค.
์์๊ฐ์ํจ์๋, ์์ ํด๋์ค์์ ๋ฐ๋์ ์ฌ์ ์ํด์ผ ํ๋ ๋ฉค๋ฒ ํจ์๋ฅผ ์๋ฏธํฉ๋๋ค. ์ด๋ฌํ ์์ ๊ฐ์ ํจ์๋ ์ผ๋ฐ์ ์ผ๋ก ํจ์์ ๋์์ ์ ์ํ๋ ๋ณธ์ฒด๋ฅผ ๊ฐ์ง๊ณ ์์ง ์์ต๋๋ค. ๋ฐ๋ผ์ ์์ ํด๋์ค์์ ์ฌ์ ์ ํ์ง ์์ผ๋ฉด ์ฌ์ฉํ ์ ์์ต๋๋ค. ๊ตฌํ ๋์ ๊ฐ์ํจ์ ์ ์ธ ๋งจ๋ค์ = 0 ๊ฐ์ ๋์ ํ๋ฉด ํด๋นํจ์๋ ์์๊ฐ์ํจ์๊ฐ ๋ฉ๋๋ค.
5. volatile ํค์๋์ ๋ํด์ ์ค๋ช ํ์ธ์.
voliatile๋ก ์ ์ธํ ๋ณ์๋ ์ปดํ์ผ๋ฌ๊ฐ ํด๋น ๋ณ์๋ฅผ ์ต์ ํ์์ ์ ์ธํ์ฌ ํญ์ ๋ฉ๋ชจ๋ฆฌ์ ์ ๊ทผํ๋๋ก ํ๋ ํค์๋์ ๋๋ค.
6. calloc, malloc, new์ ๋ํด์ ์ฐจ์ด์ ์ ์ค๋ช ํ์ธ์.
malloc๊ณผ new์ ์ฐจ์ด์ ์ ์ด 3๊ฐ์ง๊ฐ ์์ต๋๋ค. ๋ฆฌํด๊ฐ, ๋งค๊ฐ๋ณ์, ๋ผ์ด๋ธ๋ฌ๋ฆฌ ์ ๊ณต ํจ์๋ผ๋ ์ฐจ์ด์ ์ด ์์ต๋๋ค. ๋ฆฌํด๊ฐ์ ๊ฒฝ์ฐ malloc void newํ ๋นํ ํ์ ๋ง ์ง์ ํ๊ฒ ๋๋ฉด ์๋์ผ๋ก ํ ๋นํ ํ์ ์ ์๋ฃํ์ ํฌ์ธํฐ๋ฅผ ๋ฆฌํดํฉ๋๋ค. ๋๋ฒ์งธ ๋งค๊ฐ๋ณ์์ ๋๋ค. malloc์ ๊ฒฝ์ฐ ๋ฐ์ดํฐ ํ์ ์ ์ฌ์ด์ฆ์ ๊ณต๊ฐ์ ํ ๋นํ ๊ฐ์๋ฅผ ๊ณฑํ ๊ฐ์ ๋งค๊ฐ๋ณ์๋ก ๋ฐ์ต๋๋ค. ๊ทธ๋ผ malloc์ ๋ฉ๋ชจ๋ฆฌ๋ง ํ ๋นํด์ฃผ๊ณ new์ ๊ฒฝ์ฐ์๋ ํ ๋น๊ณผ ๋์์ ์ด๊ธฐํ๊ฐ ๊ฐ๋ฅํฉ๋๋ค. new์ C++์์ฒด ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ด๊ณ malloc์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ ์ ๊ณตํจ์๋ฅผ ํ์๋ก ํฉ๋๋ค.
malloc๊ณผ calloc์ ์ฐจ์ด๋ calloc์ผ๋ก ๋ฉ๋ชจ๋ฆฌ ํ ๋น์ ํ๋ฉด ํ ๋น๋ ๊ณต๊ฐ์ ๊ฐ์ ๋ชจ๋ 0์ผ๋ก ์ด๊ธฐํํ๋ ์์ ์ด ์์ต๋๋ค. ๋ํ calloc์ ๋งค๊ฐ๋ณ์๋ฅผ ๋๊ฐ๋ฅผ ์๊ตฌํฉ๋๋ค. ๋ฐ์ดํฐ ํ์ ์ ์ฌ์ด์ฆ์ ํ ๋นํ ๋ฉ๋ชจ๋ฆฌ ๊ฐ์๋ฅผ ๋งค๊ฐ๋ณ์๋ก ์๊ตฌํฉ๋๋ค.
7. ์ธ์ malloc์ ์ฌ์ฉํ๊ณ new๋ฅผ ์ฌ์ฉํด์ผํ์ฃ ?
์ฌํ ๋น์ด ๋น๋ฒํ๊ฒ ์ผ์ด๋๋ ๊ฒฝ์ฐ realloc์ด ๊ฐ๋ฅํ malloc์ ์ฌ์ฉํ๋ ๊ฒ์ด ์ณ๋ค๊ณ ์๊ฐํฉ๋๋ค. realloc์ malloc์ผ๋ก ๋์ ํ ๋น๋ ๋ฉ๋ชจ๋ฆฌ ํฌ๊ธฐ๋ฅผ ๋ณ๊ฒฝ์์ผ์ฃผ๋ ํจ์์ ๋๋ค. realloc์๋ ํ๊ณ๋ ์์ต๋๋ค. ์๋ก์ด ์์ญ์ ํ ๋น ๋ฐ๋๋ผ๋ ํ์ฌ ๋ด์ฉ์ ์์ด๋ฒ๋ฆฌ๋ ์ผ์ ์ ๋ ์์ต๋๋ค. ๊ทธ๋ฌ๋ ๋์ ์ผ๋ก ํ ๋นํ ๋ฉ๋ชจ๋ฆฌ๊ฐ ์๊ณ ์ฌ๋ฌ ๊ฐ์ ํฌ์ธํฐ๊ฐ ๊ณต์ ํ๊ณ ์๋ค๋ฉด ์ ๋ realloc์ ์ฌ์ฉํ๋ฉด ์ ๋ฉ๋๋ค. ๋๊ธ๋ง ํฌ์ธํฐ๊ฐ ๋ฐ์ํฉ๋๋ค. ๊ทธ ์์ธ์ ๋ฉ๋ชจ๋ฆฌ๊ฐ ๋ถ์กฑํด ํ์ฅ์ ๋ชปํ๊ณ ์๋ก์ด ๊ณต๊ฐ์ผ๋ก๋ ์ฎ๊ธธ์๋ ์๋ค๋ฉด nullptr์ ๋ฐํํฉ๋๋ค. ์๋ ๊ณต๊ฐ์ ๊ฐ์ ๋จ์ ์๋๋ฐ ์ฃผ์๋ฅผ ์์ด๋ฒ๋ฆฌ๊ฒ ๋ฉ๋๋ค.
8. null๊ณผ nullptr์ ์ฐจ์ด์ ์ ๋ญ๊ฐ์?
๊ธฐ๋ณธ์ NULL์ ์๋ฏธ๋ 0์ผ๋ก ์นํ๋์ด ์์๋ก ์ทจ๊ธ๋์ด ์ฒ๋ฆฌ๋์์ต๋๋ค. ๋ฐ๋ฉด์ nullptr์ ํฌ์ธํฐ ์ทจ๊ธ์ ๋ฐ์ต๋๋ค. ๋ฐ๋ผ์ nullptr์ ์์ผ๋ก์ ์ค๋ฒ๋ก๋ฉ ๊ฐ์ ์ํฉ์์ NULL์ด ๊ฐ๋ ๋ชจํธํจ์ ํด๊ฒฐํ ์ ์์ต๋๋ค.
ํฌ์ธํฐ๊ฐ ๋ค์ด์์ผํ๋๋ฐ NULL์ด ๋ค์ด์์ ๋~!
9. inlineํจ์๋ ๋ฌด์์ธ๊ฐ์?
์ปดํ์ผ๋ฌ๊ฐ ํจ์๋ฅผ ํธ์ถํ๋ ๋์ ๊ทธ์ ๋์ํ๋ ํจ์ ์ฝ๋๋ฅผ ๋์ฒดํ๋ค๋ ๊ฒ์ ์๋ฏธํ์ฌ ํจ์ ํธ์ถ์์ด ์ฝ์ ๋ ํจ์ ์ฝ๋๋ฅผ ๊ทธ ์๋ฆฌ์์ ์ฒ๋ฆฌํ๋ฏ๋ก ํด๋น ํจ์๋ฅผ ์ํํ๊ธฐ ์ํด ํ๋ก๊ทธ๋จ์ด ๋ค๋ฅธ ์ฃผ์๋ฅผ ์ ํํ๋ค๊ฐ ๋๋์์ฌ ํ์๊ฐ ์์ด ์๋๋ฉด์์ ์ ๋ฆฌํฉ๋๋ค.
10. ํ์ ํด๋์ค์ ์๋ฉธ์๋ฅผ ๋ง๋ค์ด์ผ ํ๋ ์ด์ ๋?
์์์ ๋ฐ๋ ์์ ํด๋์ค์ ์ธ์คํด์ค๋ฅผ ์์ฑํ๊ณ ๋คํ์ฑ์ ์์น์ ๋ฐ๋ผ ํด๋น ๊ฐ์ฒด๋ฅผ ๋ถ๋ชจ ํด๋์ค ํ์ ์ ๋ณ์์ ํ ๋นํ์๋ค๊ณ ๊ฐ์ ํ ๋ ์๋ฉธ์ ์ ์์ ์ผ๋ก ๋ถ๋ชจ ํด๋์ค์ ์๋ฉธ์๋ ํธ์ถ๋๋ ๋ฐ๋ฉด ์์ ํด๋์ค์ ์๋ฉธ์๋ ํธ์ถ๋์ง ์์ต๋๋ค. ํด๊ฒฐ๋ฐฉ๋ฒ์ ์ฐธ์กฐ๋ฅผ ๋ง๋ค๊ณ ์์ ํด๋์ค๋ฅผ ๊ฐ์ ์๋ฉธ์๋ก ๋ง๋ค์ด ์ค๋๋ค.
11. ํ์ด๋ฉ, ์ค๋ฒ๋ก๋ฉ, ์ค๋ฒ๋ผ์ด๋ฉ์ ์ฐจ์ด๋?
ํ์ด๋ฉ: ์์ ๋ฉค๋ฒ์ ๋ถ๋ชจ์ ๋ฉค๋ฒ ๊ฐ์ ์๋ก ๋ฉ์๋๋ฅผ ๊ฐ๋ฆฌํค๋ ๊ฒ์ ์๋ฏธํฉ๋๋ค.
์ค๋ฒ๋ก๋ฉ: ํจ์ ์ค๋ณต ์ ์ ๊ฐ์ ์ด๋ฆ์ ํจ์์ ๋งค๊ฐ๋ณ์๋ง ๋ค๋ฅด๊ฒ ์ฌ์ฉํ์ฌ ๋งค๊ฐ๋ณ์์ ๋ฐ๋ผ ๋ค๋ฅธ ํจ์๊ฐ ์คํ๋๋ ๊ฒ์ ๋งํฉ๋๋ค.
์ค๋ฒ๋ผ์ด๋ฉ: ์์๋ฐ์ ๋ ๋ถ๋ชจํด๋์ค์ ํจ์๋ฅผ ์์ํด๋์ค์์ ์ฌ์ ์ํ์ฌ ์ฌ์ฉํ๋ ๊ฒ์ ๋งํฉ๋๋ค.
12. C++ ์บ์คํ ์ฐ์ฐ์
static_cast (์ปดํ์ผ ํ์) | dynamic_cast(๋ฐํ์ ํ์ ) | |
ํน์ง | - ๋
ผ๋ฆฌ์ ์ผ๋ก ๋ณ๊ฒฝ ๊ฐ๋ฅํ ๊ฒฝ์ฐ์๋ง ๋ณ๊ฒฝ ํ์ฉ - ์ปดํ์ผํ์์ ํ๋ณํ์ด ๊ฐ๋ฅํ์ง ๊ฒ์ฌํ๋ค. |
- ๋ฐํ์ํ์์์ ์์ ์ฑ์ ๊ฒ์ฌํ๋ค. |
์ฐจ์ด์ | - ์ฌ์ฉ์๊ฐ ์ ์ํ ํด๋์ค๊ฐ ์๋ C++๋ด๋ถ์์ ์ด๋ฏธ์ ์๋ ๊ธฐ๋ณธ ์๋ฃํ๊ฐ์ ํ๋ณํ์ ํ๊ณ ์ถ์ ๋ ์ฌ์ฉ ๊ฐ๋ฅ - ๋ถ๋ชจ ํด๋์ค์์ ์์ ํด๋์ค๋ก ํ๋ณํ ํ์ฉ - ์์ ํด๋์ค์์ ๋ถ๋ชจ ํด๋์ค๋ก ํ๋ณํ ํ์ฉ |
- ๊ธฐ๋ณธ ์๋ฃํ์ผ๋ก ํ๋ณํ ๋ถ๊ฐ๋ฅ - ์์ ํด๋์ค์์ ๋ถ๋ชจ ํด๋์ค ํ๋ณํ ํ์ฉ - ํ๋ ์ด์์ ๊ฐ์ํจ์๋ฅผ ๊ฐ์ง ๋คํ์ฑ ํด๋์ค์ ํํด์ ๋ถ๋ชจ ํด๋์ค์์ ์์ ํด๋์ค๋ก ํ๋ณํ์ ํ์ฉํ๋ค. - ์ ์ผ์คํธ ํ์ฉ - ๋ค์ด์ผ์คํธ ์ ์ฝ |
parent* _parent = new child(); child* _child = static_cast<child*>(_parent);ํ์ฉ parent* _parent = new parent(); child* _child = static_cast<child*>(_parent);ํ์ฉ |
parent* _parent = new child(); child* _child = static_cast<child*>(_parent);๋ถํ parent* _parent = new parent(); child* _child = static_cast<child*>(_parent);๋ถํ child* _ child = new child(); parent* _parent = static_cast<parent*>(_child);ํ์ฉ |
- const_cast: const์ ์ฑ์ง์ ์ ๊ฑฐํ๊ณ ์ถ์ ๋ ์ฌ์ฉํฉ๋๋ค. const์ฑํฅ์ ์ ๊ฑฐํ์ง๋ง ์ค์ ๋ฐ์ดํฐ๊ฐ ๊ฐ์ง๋ ๋ฉ๋ชจ๋ฆฌ ๋ฐฐ์ด์ด ๋ฐ๋๊ฑฐ๋ ํ๋๊ฒ ์๋๊ธฐ ๋๋ฌธ์ ์ฒ์๋ถํฐ ์ฝ๊ธฐ์ ์ฉ์ผ๋ก ๋ง๋ค์ด์ง ๋ฉ๋ชจ๋ฆฌ๋ฅผ ์ต์ง๋ก ์ ๊ทผํด์ ๋ฐ๊พธ๋ ค๋ฉด ์๋ฌ๊ฐ ๋ฐ์ํฉ๋๋ค. char*๋ฅผ ๋งค๊ฐ๋ณ์๋ก ๋ฐ๋ ํจ์๋ฅผ ์ ์ํ๋ ๊ฒฝ์ฐ๊ฐ ์ข ์ข ์๋๋ฐ ๊ทธ๋ ๊ฒ ๋๋ฉด const char* ํ์ ์ ๋ฆฌํฐ๋ด ๋ฌธ์์ด์ ์ ๋ฌํ์ง ๋ชปํ๊ฒ ๋ฉ๋๋ค. ์ด๋ ์ฌ์ฉํ๋ ๊ฒฝ์ฐ๊ฐ ๋ง์ต๋๋ค.
- reinterpret_cast: ํฌ์ธํฐ/์ฐธ์กฐ์ ๊ด๋ จ๋ ํ๋ณํ๋ง ์ง์ํฉ๋๋ค. ๊ฑฐ์ C์คํ์ผ์ ํ๋ณํ ์์ค์ผ๋ก ๋ง ๊ทธ๋๋ก ์ฌํด์ ํ๋ค๊ณ ๋ณผ์ ์์ต๋๋ค.
13. call by value, call by reference
value์ ๊ฒฝ์ฐ ๋ฐ์ดํฐ ๊ฐ์ ๋ณต์ฌํด์ ํจ์๋ก ์ ๋ฌํ๊ธฐ ๋๋ฌธ์ ์๋ณธ ๋ฐ์ดํฐ๊ฐ ๋ณ๊ฒฝ๋ ๊ฐ๋ฅ์ฑ์ด ์์ต๋๋ค. ๋ํ ์ธ์๋ฅผ ๋๊ฒจ์ค ๋ ๋ง๋ค ๋ฉ๋ชจ๋ฆฌ ๊ณต๊ฐ์ ํ ๋นํ๊ธฐ ๋๋ฌธ์ ๋ฉ๋ชจ๋ฆฌ ๊ณต๊ฐ์ ์ข ๋ ์ฌ์ฉํด์ผํฉ๋๋ค.
reference์ ๊ฒฝ์ฐ๋ ๋ฉ๋ชจ๋ฆฌ ๊ณต๊ฐ ํ ๋น์ ๋ฌธ์ ๋ฅผ ๋ฒ์ด๋ฉ๋๋ค. ์ฐธ์กฐํ ๋ฐ์ดํฐ๋ฅผ ๋ณ๊ฒฝ์ ์๋ณธ ๋ฐ์ดํฐ ๊ฐ์ด ๋ณ๊ฒฝ๋๊ธฐ ๋๋ฌธ์ ์ ๊ฒฝ์จ์ ์ฌ์ฉํด์ผ ํฉ๋๋ค.
14. auto๋?
C++11์์ ์ถ๊ฐ๋ ๊ธฐ๋ฅ์ผ๋ก ์ด๊ธฐ๊ฐ์ ์ ๋ ฅํ๋ฉด ์ปดํ์ผ๋ฌ์๊ฒ ํ์ ์ ์ถ๋ก ํ๋๋ก ๋ช ๋ นํ๋ ํค์๋์ ๋๋ค. ์ปดํ์ผ ํ์ ์ ์คํ๋ฉ๋๋ค.
decltype ์ฃผ์ด์ง ์ด๋ฆ์ด๋ ํํ์์ ๊ตฌ์ฒด์ ์ธ ํ์ ์ ์๋ ค์ฃผ๋ ํค์๋์ ๋๋ค. ์ปดํ์ผ ํ์์ ์คํ๋ฉ๋๋ค. auto๊ฐ ๊ฐ์ ์์ํ๋ ํ์ ์ ์ถ๋ก ์์ผ์ฃผ๋ ํค์๋๋ผ๋ฉด decaltype์ ๊ฐ์ผ๋ก๋ถํฐ ํ์ ์ ์ถ์ถํด ๋ผ ์ ์๋ ํค์๋์ ๋๋ค.
15. ์์ ๋ณต์ฌ, ๊น์ ๋ณต์ฌ์ ๋ํด์ ์ค๋ช ํด์ฃผ์ธ์.
16. ์ค๋งํธ ํฌ์ธํฐ์ ๋ํด์ ์ค๋ช ํด์ฃผ์ธ์.
C++์์ ๋ฉ๋ชจ๋ฆฌ ๋์(memory leak)๋ก๋ถํฐ ํ๋ก๊ทธ๋จ์ ์์ ์ฑ์ ๋ณด์ฅํ๊ธฐ ์ํด ์ค๋งํธ ํฌ์ธํฐ๋ฅผ ์ ๊ณตํ๊ณ ์๋ค. ํฌ์ธํฐ์ฒ๋ผ ๋์ํ๋ ํด๋์ค ํ ํ๋ ์ผ๋ก ์ฌ์ฉ์ด ๋๋ ๋ฉ๋ชจ๋ฆฌ๋ฅผ ์๋์ผ๋ก ํด์ ํด์ค๋๋ค.
memoryํค๋ ํ์ผ์ ์ ์๋์ด ์์ต๋๋ค.
- unique_ptr ํ๋์ ์ค๋งํธ ํฌ์ธํฐ๋ง์ด ํน์ ๊ฐ์ฒด๋ฅผ ์์ ํ ์ ์๋๋ก ๊ฐ์ฒด์ ์์ ๊ถ ๊ฐ๋ ์ ๋์ ํ ํฌ์ธํฐ์ ๋๋ค. ์ด ์ค๋งํธ ํฌ์ธํฐ๋ ํด๋น ๊ฐ์ฒด์ ์์ ๊ถ์ ๊ฐ์ง๊ณ ์์ ๋๋ง, ์๋ฉธ์๊ฐ ํด๋นํ๋ ๊ฐ์ฒด๋ฅผ ์ญ์ ํ ์ ์์ต๋๋ค.
- shared_ptr๋ ์ฐธ์กฐํ๋ ์ค๋งํธ ํฌ์ธํฐ๊ฐ ์ด ๋ช ๊ฐ์ธ์ง ์ฐธ์กฐํ๋ ์ค๋งํธ ํฌ์ธํฐ์ ๋๋ค. ์ด๋ ๊ฒ ์ฐธ์กฐํ๊ณ ์๋ ์ค๋งํธ ํฌ์ธํฐ์ ๊ฐ์๋ฅผ ์ฐธ์กฐ ํ์๋ผ๊ณ ํฉ๋๋ค. ์ฐธ์กฐ ํ์๋ ํน์ ๊ฐ์ฒด์ ์๋ก์ด shared_ptr์ด ์ถ๊ฐ๋ ๋ ๋ง๋ค 1์ฉ ์ฆ๊ฐํ๊ณ ์๋ช ์ด ๋คํ ๋ 1์ฉ ๊ฐ์ํฉ๋๋ค. ์ฐธ์กฐ ํ์๊ฐ 0์ด ๋๋ฉด ์๋์ผ๋ก delete ํค์๋๊ฐ ๋ถ๋ฌ ๋ฉ๋ชจ๋ฆฌ๋ฅผ ํด์ ํฉ๋๋ค.
- weak_ptr ํ๋ ์ด์์ shared_ptr์ธ์คํด์ค๊ฐ ์์ ํ๋ ๊ฐ์ฒด์ ๋ํ ์ ๊ทผ์ ์ ๊ณตํ์ง๋ง, ์์ ์์ ์์๋ ํฌํจ๋์ง ์๋ ์ค๋งํธ ํฌ์ธํฐ์ ๋๋ค. ๋ง์ฝ ์๋ก๊ฐ ์๋๋ฐฉ์ ๊ฐ๋ฆฌํค๋ shared_ptr๋ฅผ ๊ฐ์ง๊ณ ์๋ค๋ฉด, ์ฐธ์กฐ ํ์๋ ์ ๋ 0์ด ๋์ง ์์ผ๋ฏ๋ก ๋ฉ๋ชจ๋ฆฌ๋ ์์ํ ํด์ ๋์ง ์์ต๋๋ค. ์ด๋ ๊ฒ ์๋ก๊ฐ ์๋๋ฐฉ์ ์ฐธ์กฐํ๊ณ ์๋ ์ํฉ์ ์ํ ์ฐธ์กฐ๋ผ๊ณ ํฉ๋๋ค. weak_ptr์ ๋ฐ๋ก shared_ptr์ธ์คํด์ค ์ฌ์ด์ ์ํ ์ฐธ์กฐ๋ฅผ ์ ๊ฑฐํ๊ธฐ ์ํด ์ฌ์ฉ๋ฉ๋๋ค.
17. ํด์๋ ๋ฌด์์ธ๊ฐ์?
ํด์? ํด์ ํ ์ด๋ธ์ด๋ผ๋ ์ ์ฅ๊ณต๊ฐ ๋ด์ key๋ค์ด ์ด๋ค ์์น์ ์์์ง ์ ํด์ hash table ์์ ๊ฐ๋ค์ ์ ์ฅํ๋ ๊ตฌ์กฐ๋ฅผ ๋งํฉ๋๋ค. ํด์๋ key์ value์์ผ๋ก ์ด๋ฃจ์ด์ ธ ์์ต๋๋ค.
ํด์ ํจ์๋? hash table์์ key๋ค์ด ์ด๋ค ์์น์ ์์ ์ง ์ ํด์ค๋๋ค. ๊ฐ๊ธ์ ์ด๋ฉด ์๋ก ๋ค๋ฅธ ์นธ์ ๋ค์ด๊ฐ๋๋ก ์๋๋ฉ๋๋ค.
hash bucket? hash table ๋ด ๊ฐ๊ฐ์ ์นธ์ ๋งํฉ๋๋ค. hash function์ hash bucket์ ์ด ๊ฐ์์ ๋ง๊ฒ ๊ตฌ์ฑ๋์ด์ผ ํฉ๋๋ค.
ํด์ ์ถฉ๋์ด๋? ๋ ๊ฐ ์ด์์ key๊ฐ ๊ฐ์ bucket์ ์ฌ์๋๋ ๊ฒฝ์ฐ๋ฅผ ๋งํฉ๋๋ค.
18. ๋๊ธฐ์ ๋น๋๊ธฐ์ ๊ฐ๋ ์ฐจ์ด
“๋ช ๋ น์ด ๋๋ ๋๊น์ง ์ฌ์ฉ์์๊ฒ ์ ์ด๊ถ์ ๋๋ ค์ฃผ์ง ์์ผ๋ฉด ๋๊ธฐ, ๋ช ๋ น์ด ๋๋๊ธฐ ์ ์ ์ฌ์ฉ์์๊ฒ ์ ์ด๊ถ์ ๋๋ ค์ฃผ๋ฉด ๋น๋๊ธฐ์ ๋๋ค.”
๋ง ๊ทธ๋๋ก ๋๊ธฐ๋ ๋์์ ์ผ์ด๋๋ค๋ ๋ป์ ๋๋ค. ์์ฒญ๊ณผ ๊ทธ ๊ฒฐ๊ณผ๊ฐ ๋์์ ์ผ์ด๋๋ค๋ ์ฝ์์ธ๋ฐ์ A๋ ธ๋์ B๋ ธ๋ ์ฌ์ด์ ์์ ์ฒ๋ฆฌ ๋จ์๋ฅผ ๋์์ ๋ง์ถ๊ฒ ๋ค๋ ๋ป์ ๋๋ค. ๋ฐ๋ฉด ๋น๋๊ธฐ๋ ๋์์ ์ผ์ด๋์ง ์๋๋ค๋ ๊ฒ์ ์๋ฏธํฉ๋๋ค. ๋ ธ๋ ์ฌ์ด์ ์์ ์ฒ๋ฆฌ ๋จ์๋ฅผ ๋์์ ๋ง์ถ์ง ์์๋ ๋๋ค๋ ๋ป์ ๋๋ค. ๋๊ธฐ๋ ์ค๊ณ๊ฐ ๋งค์ฐ ๊ฐ๋จํ๊ณ ์ง๊ด์ ์ด์ง๋ง ๊ฒฐ๊ณผ๊ฐ ์ฃผ์ด์ง ๋๊น์ง ์๋ฌด๊ฒ๋ ๋ชปํ๊ณ ๋๊ธฐํด์ผ ํ๋ค๋ ๋จ์ ์ด ์๊ณ , ๋น๋๊ธฐ๋ฐฉ์์ ๋๊ธฐ๋ณด๋ค ๋ณต์กํ์ง๋ง ๊ฒฐ๊ณผ๊ฐ ์ฃผ์ด์ง๋๋ฐ ์๊ฐ์ด ๊ฑธ๋ฆฌ๋๋ผ๋ ๊ทธ ์๊ฐ ๋์ ๋ค๋ฅธ ์์ ์ ํ ์ ์์ผ๋ฏ๋ก ์์์ ํจ์จ์ ์ผ๋ก ์ฌ์ฉํ ์ ์๋ ์ฅ์ ์ด ์์ต๋๋ค.
19. const
๋ณ์๋ ์ํฉ์ ๋ฐ๋ผ ๊ทธ ๊ฐ์ด ๋ณ๊ฒฝ๊ฐ๋ฅํ์ง๋ง ์์์ธ const๋ก ์ง์ ์ ํ๋ฉด ๊ทธ ๊ฐ์ ์ ๋๋ก ๋ฐ๊ฟ์ ์๋ค. ๋ณ์์ ๋ฌ๋ฆฌ ์ฒ์ ์์๋ฅผ ์ ์ํ ๋ ๊ฐ์ ์ง์ ํด ์ฃผ์ด์ผ ํ๋ค.
const int* c c๋ ์์๋ง์ ๊ฐ๋ฆฌํค๋ ํฌ์ธํฐ๋ผ๋ ์๋ฏธ์ด๋ค. C๊ฐ ๊ฐ๋ฆฌํค๋ ๋์์ ๋ณ๊ฒฝ์ด ๊ฐ๋ฅํ์ง๋ง ๊ฐ๋ฆฌํค๋ ๊ฐ์ ๋ณ๊ฒฝํ ์ ์๋ค.
int* const c = &a; ํฌ์ธํฐ๊ฐ ๊ฐ๋ฆฌํค๋ ์์น๋ ๋ณ๊ฒฝํ ์ ์๊ณ ๊ฐ๋ฆฌํค๋๊ฐ์ ๋ณ๊ฒฝ์ด ๊ฐ๋ฅํ๋ค.
20. ๋์ ๋ฐ์ธ๋ฉ
๋ถ๋ชจ ํด๋์คํ ํฌ์ธํฐ๋ก ์์ ํด๋์ค๋ฅผ ๊ฐ๋ฆฌํค๋ ์ ์บ์คํ ์ํฉ์์ฌ ์ค๋ฒ๋ผ์ด๋ฉ ๋ ๋ถ๋ชจ ์ฟจ๋์ค์ ๋ฉ์๋๋ฅผ ํธ์ถํ๊ฒ ๋๋ฉด ์คํ์๊ฐ์ ๋์ ์ผ๋ก ์์ ํด๋์ค์ ๋ฉ์๋๋ฅผ ํธ์ถํ๋ ๊ฒ์ ์๋ฏธํฉ๋๋ค.
21. ํ ํ๋ฆฟ ๋ฉํํ๋ก๊ทธ๋๋ฐ
ํ ํ๋ฆฟ์ ์ฌ์ฉํ๋ ํ๋ก๊ทธ๋๋ฐ ๊ธฐ๋ฒ์ผ๋ก ์ปดํ์ผ๋ฌ์๊ฒ ํ๋ก๊ทธ๋จ ์ฝ๋๋ฅผ ์์ฑํ๋๋ก ํ๋ ๋ฐฉ์์ด๋ค. ์ด๋ฌํ ๊ธฐ๋ฒ์ ์ปดํ์ผ ์์ ์ ๋ง์ ๊ฒ์ ๊ฒฐ์ ํ๋๋ก ํ์ฌ, ์คํ ์์ ๊ณ์ฐ์ ์ค์ฌ์ค๋๋ค.
22. ๋๋ค๋?
์ฝ๊ฒ ๋งํด ์ด๋ฆ ์๋ ํจ์์ ๋๋ค. ์บก์ณ, ์ธ์, ๋ฐํํ, ๋ชธํต์ผ๋ก ๊ตฌ์ฑ๋์ด ์์ผ๋ฉฐ ๋ฐํ์ ์ ์ด๋ฆ์ ์์ง๋ง, ๋ฉ๋ชจ๋ฆฌ ์์ ์์์ ์ผ๋ก ์กด์ฌํ๋ ํด๋ก์ ธ ๊ฐ์ฒด๊ฐ ์์ฑ๋ฉ๋๋ค.
23. ์บก์ณ ํ๋ ๋ฐฉ๋ฒ (์บก์ณ์ ๋ฒ์๋ ์ ์ญ)
- [a,&b] a๋ฅผ ๋ณต์ฌ๋ก ์บก์ฒ, b๋ฅผ ์ฐธ์กฐ๋ก ์บก์ฒ.
- [this] ํ์ฌ ๊ฐ์ฒด๋ฅผ ์ฐธ์กฐ๋ก ์บก์ฒ.
- [&] ๋ชธํต์์ ์ฐ์ด๋ ๋ชจ๋ ๋ณ์๋ ์์๋ฅผ ์ฐธ์กฐ๋ก ์บก์ฒํ๊ณ ํ์ฌ ๊ฐ์ฒด๋ฅผ ์ฐธ์กฐ๋ก ์บก์ฒ.
- [=] ๋ชธํต์์ ์ฐ์ด๋ ๋ชจ๋ ๋ณ์๋ ์์๋ฅผ ๋ณต์ฌ๋ก ์บก์ฒํ๊ณ ํ์ฌ ๊ฐ์ฒด๋ฅผ ์ฐธ์กฐ๋ก ์บก์ฒ.
- [] ์๋ฌด๊ฒ๋ ์บก์ฒํ์ง ์์.
24. explicit: ์์ ์ด ์ค์ ๋ ๋ฐฉ์์ผ๋ก๋ง ๊ฐ์ฒด๋ฅผ ์์ฑํ๋๋ก ํ๋ ๊ธฐ๋ฅ์ ์ ๊ณตํ๋ค.
25. ์ฝํ ์คํธ ์ค์์น
26. constexpr
27. rvalue, lvalue
28. ์ ์ ์ฐ์ฐ๊ณผ ํ์ ์ฐ์ฐ์ ์ฐจ์ด
:: ์ ์์ฐ์ฐ๊ณผ ํ์์ฐ์ฐ๊ณผ์ ์ฐจ์ด๋ ์์๊ฐ์ฒด๋ฅผ ๋ง๋ค์ด์ ๋ฆฌํดํ๋? ์ํ๋์ ์ฐจ์ด ์ ๋๋ค.
Debug๋ชจ๋์ ๊ฒฝ์ฐ์๋ ํ์์ฐ์ฐ์์ ๊ฒฝ์ฐ์๋ ์์๊ฐ์ฒด๋ฅผ ๋ง๋ค์ด ๋ฆฌํดํ์ฌ ๋น์ฐํ ์ ์์ฐ์ฐ๋ณด๋ค ๋๋ฆฌ์ง๋ง
release ๋ชจ๋์์๋ ์ปดํ์ผ๋ฌ์ ์ต์ ํ๋ก ๋์ ์ฑ๋ฅ์ ๊ฐ๋ค๊ณ ํฉ๋๋ค.
29. Explict ํค์๋๋?
Explict ํค์๋๋ C์ C++์ ๊ณตํต ํน์ง ์ค ํ๋์ธ ๋ฌต์์ ํ๋ณํ์ ๋ง์์ฃผ๋ ํค์๋ ์ ๋๋ค.
๋ฌต์์ ํ๋ณํ ๋๋ฌธ์ ๋ฐ๊ฒฌํ๊ธฐ ํ๋ ์ด๋ ค์ด ๋ฒ๊ทธ๊ฐ ์๊ธฐ๋ ๊ฒ์ ๋ฐฉ์งํ๊ธฐ ์ํด ๋์ ๋ ํค์๋ ์ ๋๋ค.
30. C++11์ ์ฒ์ ๋ค์ด์จ ๋ฌธ๋ฒ์?
๋ฐ๋ก autoํค์๋ ์ ๋๋ค.
auto๋ ์ปดํ์ผ ํ์์ ์๋์ผ๋ก type์ ์ง์ ํ ์ ์๋๋กํ๊ธฐ ํค์๋ ์ ๋๋ค.
auto๋ ์ด๊ธฐํ ๊ฐ์ ๋ณด๊ณ ์๋ฃํ์ ํ๋จํ๊ธฐ ๋๋ฌธ์ ์ ์ธ๋ง ํ๋ ๊ฒ์ ๋ถ๊ฐ๋ฅ ํฉ๋๋ค.
'๐๐ปโโ๏ธ pinko > โฝ ๊ฒ์ํ์ฌ' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
์ ํ๋ ๊ฒ ๋ณด๋ค ๋ซ๊ฒ ์ง
ํฌ์คํ ์ด ์ข์๋ค๋ฉด "์ข์์โค๏ธ" ๋๋ "๊ตฌ๋ ๐๐ป" ํด์ฃผ์ธ์!