M1 2 1
- 2. ํฌ์ธํฐ(pointer)์ ์ฐธ์กฐ์(reference)๋ฅผ ๊ตฌ๋ถํ์
๊ฐ๋จ ๊ตฌ๋ถ
!
ํฌ์ธํฐ * ->
์ฐธ์กฐ์ .
์ฐธ์กฐ์์๊ฒ๋ ๋ ์ฐธ์กฐ์(null reference)๊ฐ ์๋ค.
->๋ฐ๋์ ๊ฐ์ด ์์ด์ผ ํ๋ค.
!
๋ง์ฝ ์์ ์ ์๋ค๋ฉด NULL์ ์ธํ
ํ ์ ์๋ ํฌ์ธํฐ๋ฅผ ์ฐ์.
!
Null์ด ์์ ๊ฐ๋ฅ์ฑ์กฐ์ฐจ ๋ถ์ ํ ๋ ค๋ฉด ์ฐธ์กฐ์ ์ฌ์ฉ
- 4. ์ฐธ์กฐ์ง๋ฅผ ์จ์ผ ํ๋ ๊ฒฝ์ฐ๋
!
์ฐธ์กฐํ ํฌ์ธํฐ๊ฐ ์ฒ์๋ถํฐ ๋๊น์ง ์กด์ฌํ ๊ฒ์์ ์๊ณ ์์ ๋์
์ฐธ์กฐํ๋ ๋์ ๊ฐ์ฒด๋ฅผ ๋ฐ๊ฟ ํ์๊ฐ ์์๋
!
์ฐ์ฐ์ ํจ์๋ฅผ ๊ตฌํํ ๋
- 5. ๊ฐ๋ฅํ C++ ์คํ์ผ์ ์บ์คํธ๋ฅผ ์ฆ๊ฒจ ์ฐ์
์บ์คํ
์์ฐ๋ฉด ์ข์ง๋ง
์ด์ฉ์ ์์๋ ์ฐ๊ฒ ๋จ
!
๊ทธ๋ฐ๋ฐ C์คํ์ผ ์บ์คํ
์ ํ์ง ๋ง์.
- 6. C++์ ์ถ๊ฐ๋
static cast, const cast, dynamic cast, reinterpret cast์ ์ฐ์.
C์คํ์ผ
(ํ์
) ํํ์
!
C++์คํ์ผ
static cast<ํ์
>(ํํ์)
- 9. dynamic_cast
!
์์ ๊ณ์ธต ๊ด๊ณ๋ฅผ ๊ฐ๋ก์ง๋ฅด๊ฑฐ๋ ํํฅ์ํจ ํด๋์ค ํ์
์ผ๋ก
์์ ํ๊ฒ ์บ์คํ
ํ ๋ ์ฌ์ฉ
!
-๊ธฐ๋ณธ ํด๋์ค์ ๊ฐ์ฒด์ ๋ํ ํฌ์ธํฐ๋
์ฐธ์กฐ์์ ํ์
์ ํ์(derived) ํด๋์ค,
ํ์ (sibling) ํด๋์ค์ ํ์
์ผ๋ก ๋ณํ
!
์บ์คํ
์ ์คํจ์ ๋ ํฌ์ธํฐ๋ฅผ ๋ฐํ
- 11. ๋ฐฐ์ด๊ณผ ๋คํ์ฑ์ ๊ฐ์ ์์ค์ผ๋ก ๋๊ณ ๋ณผ ๊ฒ์ด ์๋๋ค.
๋ฐฐ์ด์ ์์น๋ฅผ ๊ณ์ฐ์ ํ ๋
i*sizeof(๋ฐฐ์ด ๋ด์ ์์ ๊ฐ์ฒด ํ๋)
์ด๋ฐ์์ผ๋ก ํ๋๋ฐ
!
๋คํ์ฑ์ผ๋ก ์ธํด ๋ค๋ฅธ ํฌ๊ธฐ์ ์ฌ์ด์ฆ๋ฉด ์ ๋๋ก ์๋ํ์ง ์๋๋คโฆ
- 12. ์ธ๋ฐ ์๋ ๊ธฐ๋ณธ ์์ฑ์๋ ๊ทธ๋ฅ ๋์ง ๋ง์
๊ธฐ๋ณธ ์์ฑ์(default constructor)
(์๋ฌด๋ฐ ์ธ์๋ ๋ฐ์ง ์๊ณ ํธ์ถ๋ ์ ์๋ ์์ฑ์)
->์ด๊ธฐํ ํ๋ ์ญํ
!
-> ์์ ํ ์ด๊ธฐํ ๋ชปํ๋ ๊ฒฝ์ฐ๊ฐ ์๋ค.
!
์์ ๋ฉด?
(๋ฐฐ์ด)์ ์ด๊ธฐํ ํ๊ธฐ ํ๋ค์ด์ง
ํ
ํ๋ฆฟ ์ปจํ
์ด๋ ํด๋์ค์์๋ ๋ ํ๋ค์ด์ง
!
๊ทธ๋ฅ ๋๋๋ฉด?
์ด๊ธฐํ ๋์๋์ง ์ด๋ป๊ฒ ์์?
๊ฒฐ๊ตญ ์์ธ์ฒ๋ฆฌ ์์ฒญํด์ผํจ
- 14. ์ฌ์ฉ์ ์ ์ ํ์
๋ณํ ํจ์์ ๋ํ ์ฃผ์๋ฅผ ๋์ง ๋ง์
c++ char๋ฅผ int ํ์
์ผ๋ก ํน์ short๋ฅผ double ํ์
์ผ๋ก ๋ฐ๊ฟ๋
๋ณ ๋ฌธ์ ์์์ฃ ?
-> ์ปดํ์ผ๋ฌ๊ฐ ์์์ ํ๋์ฝ๋ฉ๋์ด ์ฒ๋ฆฌ๋๊ณ ์์
!
-๋จ์ผ ์ธ์ ์์ฑ์(single-argument constructor)
->์ธ์๋ฅผ ํ๋๋ง ๋ฐ์ ํธ์ถ๋๋ ์์ฑ์
!
-์์์ ํ์
๋ณํ ์ฐ์ฐ์ (implicit type conversion operator)
->ํ์
์์ operator๋ง ๋ถ์ด ์๋ ํจ์
- 15. ์์์ ํ์
๋ณํ ์ฐ์ฐ์
!
์ํ์ง ์์๋์๋ ํธ์ถ๋๊ณ ๋ง์ ์๋ค.
-> ์ฐพ๊ธฐ ํ๋ ๋ฒ๊ทธ๋ฅผ ์ ๋ฐ
!
c_str๊ฐ์ด ์ด๋ฆ์ ๋ฌ๋ฆฌํ๋ ํจ์๋ฅผ ๋ง๋ค์ด์ ์ฐ์.
ํ์
๋ณํ ํจ์๋ฅผ ์ง์ ํธ์ถํ๋ฉด ์๋์น ์์ ํจ์ ํธ์ถ์ ๋ง์ ์ ์๋ค.
- 16. ๋จ์ผ ์ธ์ ์์ฑ์๋ฅผ ํตํ ์์์ ํ์
๋ณํ์ ๋ง๊ธฐ ๋ ํํด๋ค๋ค.
->
explicit ํค์๋๋ฅผ ์ฌ์ฉํด ์์์ ํ์
๋ณํ์ ๋ง์ ์ ์๋ค.
(๋ช
์์ ํ์
๋ณํ์ ๊ณ์ ํ์ฉ)
!
!
๋ค๋ฅธ ๊ฐ์ฒด๋ฅผ ๋์ ํ๋ ํด๋์ค : ํ๋ก์ ํด๋์ค(Proxy class)
๋ค๋ฅธ ๋ฐฉ๋ฒ์ผ๋ก๋ ์ด๋ป๊ฒ ํ ์ ์๋ ์ํํธ์จ์ด์ ๋์๋ฐฉ์์ ์กฐ์ ํ๋ค.
- 17. ์ฆ๊ฐ ๋ฐ ๊ฐ์ ์ฐ์ฐ์์
์ ์(pre๏ฌx)/ํ์(post๏ฌx) ํํ๋ฅผ ๋ฐ๋์ ๊ตฌ๋ถํ์
์๋ ์๋ ++,โ์ฐ์ฐ์๋ฅผ ์ ์ ๋ฐฉ์๊ณผ ํ์ ๋ฐฉ์์ผ๋ก ํธ์ถํ๋ ๊ฒ์
๊ตฌ๋ถํ ์ ์์์ ๋์๋๋ฐ
!
์ด์ ๋ ์ ์/ ํ์ ํํ๋ฅผ ์ค๋ฒ๋ก๋ฉํ ์ ์๊ฒ ๋์๋ค.
- 18. ์ ์ ++
ํ์ ++
์ ์ โ
ํ์ โ
์ค๋ฒ๋ก๋ฉ๋ ํจ์๋ ๊ทธ ํจ์์ ๋๊ธฐ๋
๋งค๊ฐ๋ณ์์ ํ์
์ ๋ฐ๋ผ ๊ตฌ๋ถ๋์ง๋ง
!
์ฆ๊ฐ(++โ)์ฐ์ฐ์๋ ์ธ์๋ฅผ ๋ฐ์ง ์์
ํ์๋ intํ์
์ ์ธ์๋ฅผ ๋ฐ๊ณ
ํ์ํํ์ ์ฆ๊ฐ ์ฐ์ฐ์๊ฐ ํธ์ถ๋ ๋ 0์ ๋๊ธฐ๋๋ก ํจ
- 19. ์ ์ ํํ์ ์ฆ๊ฐ ์ฐ์ฐ์๋
โ์ฆ๊ฐ์ํค๊ณ ๊ฐ์ ์ฌ์ฉํ๋ (increment and fetch)" ์ฐ์ฐ์
(++i)
!
!
ํ์ ํํ๋
โ๊ฐ์ ์ฌ์ฉํ๊ณ ์ฆ๊ฐ์ํค๋(fetch and increment)" ์ฐ์ฐ์
(i++)
!
ํ์ ํํ์๋
์ง์ญ ๋ณ์๋ก์ ์๊ฒผ๋ค๊ฐ ์์ด์ง๋ ์์ ๊ฐ์ฒด(oldValue)๊ฐ ์์
์ ์ ์ฐ์ฐ์๋ฅผ ์ฌ์ฉํฉ์๋ค.
for(int i=0; i<10; ++i)
- 20. &&, || ํน์ ,์ฐ์ฐ์๋ ์ค๋ฒ๋ก๋ง ๋์์ด ์ ๋๋ก ์๋๋ค
๋จ์ถํ๊ฐ(short-circuit)
์์์ ์ด๋ฏธ ์กฐ๊ฑด์ ๋ฒ์ด๋๋ฉด ๋ค๋ ๊ทธ๋ฅ ๋ฌด์
(์๊ฐ ๋จ์ถ ๊ฐ๋ฅ!)
- 23. ์ค๋ฒ๋ก๋ฉ ๊ฐ๋ฅ ์ฐ์ฐ์
์ค๋ฒ๋ก๋ฉ ๋ถ๊ฐ๋ฅ ์ฐ์ฐ์
์ค๋ฒ๋ก๋ฉ์ ์ฐธ๋ ๋ชฉํ๋ ํ๋ก๊ทธ๋จ์
์ฝ๊ณ , ์ฐ๊ณ , ์ดํดํ๊ธฐ ์ข๊ฒ ๋ง๋ค์๋ ๋ฐ์ ์์ง
๊ทธ๋ฅ ํฐ ์๋ฏธ ์์ด ์ค๋ฒ๋ก๋ฉํ์ง ๋ง์.
- 24. new์ delete์ ์๋ฏธ๋ฅผ ์ ํํ ๊ตฌ๋ถํ๊ณ ์ดํดํ์
โnew ์ฐ์ฐ์โ์ โoperator new'๋ ๋ค๋ฅธ๊ฒ
!
operator new๋ ๋ฉ๋ชจ๋ฆฌ ํ ๋น
new์ฐ์ฐ์๋ operator new๋ฅผ ํธ์ถํด์
๋ฉ๋ชจ๋ฆฌ๋ฅผ ๋ฐ๊ณ ๊ฐ์ฒด ๊ตฌ์ค์ ํ ์ ์๊ฒ ์์ฑ์๋ฅผ ํธ์ถํจ
- 25. ๋ฉ๋ชจ๋ฆฌ ์ง์ new(Placement new)
์ด๋ฏธ ๋ง๋ค์ด์ง ๊ฐ์ฒด์ ์์ฑ์๋ฅผ ํธ์ถํ๊ณ ์ถ์๋ฐ
์์ฑ์๋ ๋ฑ ํ๋ฒ๋ง ์ด๊ธฐํ ๋จ
์ผ๋จ ๋ฉ๋ชจ๋ฆฌ ๊ณต๊ฐ์ด ์๋๋ฐ ๊ฑฐ๊ธฐ์ ์ด๊ธฐํ ํด์ ๊ฐ์ฒด๋ก ๋ง๋ค๊ณ ์ถ์ผ๋ฉด
!
๋ฉ๋ชจ๋ฆฌ ์ง์ new(Placement new)์ ์ฌ์ฉํจ
- 26. new ์ฐ์ฐ์๊ฐ operator new๋ฅผ ํธ์ถ
๊ธฐ๋ณธ์ ์ผ๋ก ์ ๋ฌํด์ผ ํ๋ size_t ์ธ์์ ํจ๊ป
์ํ๋ ๊ฐ์ฒด๊ฐ ์์ฑ๋ ๋ณด๊ธ์๋ฆฌ๋ก ์ผ์ ๋ฉ๋ชจ๋ฆฌ๋ฅผ ๊ฐ๋ฆฌํค๋ void*๊ฐ ์ ๋ฌ
์ด operator new๊ฐ ๋ฐ๋ก ๋ฉ๋ชจ๋ฆฌ ์ง์ new
๊ฐ์ฒด๋ฅผ ๋ง๋ค ๋ฉ๋ชจ๋ฆฌ๋ฅผ ์ฐพ์ ๊ทธ ๋ฉ๋ชจ๋ฆฌ์ ํฌ์ธํฐ๋ฅผ ๋ฐํ
- 27. new ์ฐ์ฐ์ - ๋ฉ๋ชจ๋ฆฌ ํ ๋น๊ณผ ๊ทธ ๊ฐ์ฒด์ ๋ํ
์์ฑ์ ํธ์ถ์ด ๋์์ ์ด๋ฃจ์ด์ง
!
operator new - ์์ฑ์ ํธ์ถX ๋ฉ๋ชจ๋ฆฌ ํ ๋น๋ง ํ๊ณ ์ถ์ ๋ ์ฌ์ฉ
(๋ฉ๋ชจ๋ฆฌ ํ ๋น ๋งค์ปค๋์ฆ์๋ ์์ ๋๊ณ ์ถ์ผ๋ฉด operator new๋ฅผ ์์ฑ ํ new ์ฐ์ฐ์ ํธ์ถํ๋ฉด ๋จ)
- 28. C++์์๋ ๊ฐ์ฒด์ ๋ฉ๋ชจ๋ฆฌ ํด์ ๋ฅผ ์ญ์ (deletion)๋ ์ด๋ฆ์ผ๋ก ๋ถ๋ฅธ๋ค.
delete ์ฐ์ฐ์ ์ฌ์ฉ ํ๋๊ฒ์โฆ
!
new๋์ ๋ง์ฐฌ๊ฐ์ง๋ก operator delete๊ฐ ์์
๊ฐ์ฒด ์ญ์ ์ ๋ฉ๋ชจ๋ฆฌ ํด์ (deletion & deallocation)
๋ฏธ์ด๊ธฐํ ๋ฉ๋ชจ๋ฆฌ๋ง์ผ๋ก ์ด๋ค ์ผ์ ํ ๋์๋ new delete์ฐ์ฐ์๋ฅผ
๊ฑด๋๋ฐ๊ณ ๊ทธ ๋์ operator new๋ฅผ
๋ฉ๋ชจ๋ฆฌ ๋ฐํ์์๋ operator deleteํธ์ถ
C++ ver malloc free
- 29. ๋ฉ๋ชจ๋ฆฌ ์ง์ new๋ฅผ ์ฌ์ฉํ ๊ฒฝ์ฐ
delete ์ฐ์ฐ์๋ฅผ ์ฐ๋ฉด ์๋๊ณ ์ง์ ์๋ช
์๋ฅผ ํธ์ถํ๊ณ
operator delete๋ฅผ ํด์ผ ํ๋ค.
- 31. operator new์ operator new[]์ ์ฐจ์ด์
!
[] ๋ฒ์ ผ์ ๋ฐฐ์ด ์์์ ๋ํด ์ผ์ผ์ด ์์ฑ์๋ฅผ ํธ์ถํด์ผ ํ๋ค.
!
delete๋ ๋ง์ฐฌ๊ฐ์ง๋ก operator delete[]์ฌ์ฉ