More Related Content
Effective c++ chapter7_8_9_dcshin C++ Advanced ๊ฐ์ 3์ฃผ์ฐจ C++ Advanced ๊ฐ์ 5์ฃผ์ฐจ [์๊ฟ์ฌ] The C++ Programming Language 13์ฅ ํ
ํ๋ฆฟ Modern C++์ ํ์
์ถ๋ก ๊ณผ ๋๋ค, ์ปจ์
What's hot (20)
[SwiftStudy 2016] 2์ฅ. Swift ํ์
ํํธ 1 ์นด์ฌ ๊ณต๊ฐ์ธ๋ฏธ๋1ํ W.E.L.C. Effective c++ chapter 7,8 [SwiftStudy 2016] 3์ฅ. ํจ์ Effective c++chapter1 and2 Refelction์ ๊ฐ๋
๊ณผ RTTR ๋ผ์ด๋ธ๋ฌ๋ฆฌ NHNNEXT ๊ฐ๊ฒฝํ14 Subway Rocket Team Study 3rd C++ C++ Advanced ๊ฐ์ 1์ฃผ์ฐจ Effective c++(chapter 5,6) [C++ Korea 3rd Seminar] ์ C++์ ์ Visual Studio์, ์ข์ถฉ์ฐ๋ ๋ง์ด๊ทธ๋ ์ด์
์ด์ผ๊ธฐ ์ดํํฐ๋ธ C++ ์คํฐ๋ 2013 C++ Study For Students #1 Similar to Chapter7~9 ppt (20)
effective c++ chapter 3~4 ์ ๋ฆฌ ์ดํํฐ๋ธ C++ 789 ๊ณต๋ถ A tour of C++ : the basics More effective c++ chapter1,2 Effective c++ chapter 1,2 ์์ฝ Policy based Class Design 2014-15 Intermediate C++ Study #7 Effective c++ ์ ๋ฆฌ chapter 4 HolubOnPatterns/chapter2_2 Working Effectively With Legacy Code - xp2005 [๋ฐ๋ธ๋ฃจํค] ๊ฒ์ ์์ง ์ํคํ
์ณ_3์ฅ_๊ฒ์์ ์ํ ์ํํธ์จ์ด ์์ง๋์ด๋ง ๊ธฐ์ด More from Injae Lee (6)
More Effective C++ 4์ฃผ์ฐจ More effective c++ 3์ฃผ์ฐจ More effective c++ แแ
ขแธแแ
ฅ3~4ppt More effective c++ Chap1~2 ๊ฐ์ค๋ธ์ ์ด์ผ์
ํฌ์คํธ๋ชจํ
Chapter7~9 ppt
- 2. ํญ๋ชฉ 41 : ํ
ํ๋ฆฟ ํ๋ก๊ทธ๋๋ฐ์ ์
์์ ์ธํฐํ์ด์ค์ ์ปดํ์ผ ํ์
ํ์ฑ๋ถํฐ
โข ๊ฐ์ฒด ์งํฅ์์ ์ค์ํ ์ ์ ๋ช
์์ ์ธํฐํ์ด์ค์ ๋ฐํ์ ๋ค
ํ์ฑ
โข ์ธํฐํ์ด์ค๋ฅผ ์์ค์ฝ๋์์
์ฐพ์ผ๋ฉด ์ด๊ฒ์ด ์ด๋ค ํํ์ธ์ง
๋ฅผ ํ์ธํ ์ ์๋๋ฐ ์ด๋ฐ ์ธ
ํฐํ์ด์ค๋ฅผ ๋ช
์์ ์ธํฐํ์ด
์ค
โข ์์ค ์ฝ๋์ ๋ช
์์ ์ผ๋ก ๋๋ฌ
๋๋ ์ธํฐํ์ด์ค
โข class Widget{};
โข void Do( Widget&
w){
};
โข wํ์
์ด ๋ฌด์์ธ์ง
์ฝ๋๋ฅผ ํตํด ์ ์
์๋ค. ์ฆ ๋ช
์์ ์ธ
ํฐํ์ด์ค
- 3. ์์์ ์ธํฐํ์ด์ค์ ์ปดํ์ผ ํ
์ ๋คํ์ฑ
โข ์์์ ์ธํฐํ์ด์ค์ ์ปดํ์ผ
ํ์ ๋คํ์ฑ์ ํ
ํ๋ฆฟ ์ผ๋ฐํ
ํ๋ก๊ทธ๋๋ฐ์์ ๋งค์ฐ ๋ง์ด ํ
์ฉ
โข ํ
ํ๋ฆฟ์ ์ธ์คํด์คํ๊ฐ ์ผ์ด
๋๋ ์์ ์ ์ปดํ์ผ ๋์ค
โข ์ด๊ฒ์ ๊ฐ๋ฆฌ์ผ ์ปดํ์ผ ํ์ ๋ค
ํ์ฑ
โข template<typename T>
void Do(T& w)
{
โฆ
}
์ด ํจ์์์๋ w ์ ํ
์
์ T๊ฐ ๋๋ค.
- 4. ํญ๋ชฉ 41 ์ ๋ฆฌ
โข ํด๋์ค ๋ฐ ํ
ํ๋ฆฟ์ ๋ชจ๋ ์ธํฐํ์ด์ค์ ๋คํ์ฑ
์ ์ง์ํจ
โข ํด๋์ค์ ๊ฒฝ์ฐ, ์ธํฐํ์ด์ค๋ ๋ช
์์ ์ด๋ฉฐ ํจ์
์ ์๊ทธ๋์ฒ๋ฅผ ์ค์ฌ์ผ๋ก ๊ตฌ์ฑ๋์ด ์์ต๋๋ค. ๋ค
ํ์ฑ์ ํ๋ก๊ทธ๋จ ์คํ ์ค์ ๊ฐ์ ํจ์๋ฅผ ํตํด ๋
ํ๋จ
โข ํ
ํ๋ฆฟ ๋งค๊ฐ๋ณ์์ ๊ฒฝ์ฐ ์ธํฐํ์ด์ค๋ ์์์ ์ด
๋ฉฐ ์ ํจ ํํ์์ ๊ธฐ๋ฐ์ ๋์ด ๊ตฌ์ฑ
โข ๋คํ์ฑ์ ์ปดํ์ผ ์ค์ ํ
๋ฏ๋ฆฟ ์ธ์คํด์คํ์ ํจ
์ ์ค๋ฒ๋ก๋ฉ ๋ชจํธ์ฑ ํด๊ฒฐ์ ํตํด ๋ํ๋จ
- 5. ํญ๋ชฉ 42 : typename์ ๋๊ฐ์ง ์
๋ฏธ
โข ํ
ํ๋ฆฟ์ ํ์
๋งค๊ฐ๋ณ์๋ฅผ ์
์ธํ ๋๋ class์ typename
์ ๋ป์ด ์์ ํ ๋๊ฐ๋ค
โข ํ
ํ๋ฆฟ ๋งค๊ฐ๋ณ์์ ์ข
์๋ ๊ฒ
์ ๊ฐ๋ฆฌ์ผ ์์กด ์ด๋ฆ์ด๋ผ๊ณ ํ
๋ค.
โข ํ
ํ๋ฆฟ ๋งค๊ฐ๋ณ์๊ฐ ์ด๋ป๋ ์
๊ด์๋ ํ์
์ด๋ฆ์ ๋น์์กด ์ด
๋ฆ์ด๋ผ๊ณ ํ๋ค.
โข template<class T>class
W;
โข template<typename T>
class W;
โข ๋์ ์ฐจ์ด๊ฐ ์๋ค.
โข void Pro(const C& con){
C::const_iterator
iter(con.begin());
int value ;
}
โข iter๋ ํ
ํ๋ฆฟ ๋งค๊ฐ๋ณ์ C์
์์กด์ ์ด๋ค.
value๋ C์ ์์กด์ ์ด์ง ์
๋ค.
- 6. typename์ ์์ธ
โข typename ํค์๋๋ ์ค์ฒฉ ์ด๋ฆ ์์กด๋ง ์๋ณํ๋
๋ฐ ์จ์ผ ํ๋ค. ๊ทธ ์ธ ์ด๋ฆ์ type-name์ ๊ฐ์ ธ์
์ ๋๋ค.
โข ์์ธ์ ์ผ๋ก ์ค์ฒฉ ์์กด ํ์
์ด๋ฆ์ด ๊ธฐ๋ณธ ํด๋์ค
์ ๋ฆฌ์คํธ์ ์๊ฑฐ๋ ๋ฉค๋ฒ ์ด๊ธฐํ ๋ฆฌ์คํธ ๋ด์ ๊ธฐ
๋ณธ ํด๋์ค ์๋ณ์๋ก์ ์์ ๊ฒฝ์ฐ์๋ typename
์ ๋ถ์ฌ ์ฃผ๋ฉด ์ ๋๋ค.
- 7. ํญ๋ชฉ 42 ์ ๋ฆฌ
โข ํ
ํ๋ฆฟ ๋งค๊ฐ๋ณ์๋ฅผ ์ ์ธํ ๋, class ๋ฐ
typename์ ์๋ก ๋ฐ๊พธ์ด ์จ๋ ๋ฌด๋ฐฉ
โข ์ค์ฒฉ ์์กด ํ์
์ด๋ฆ์ ์๋ณํ๋ ์ฉ๋์๋ ๋ฐ๋
์ typename์ ์ฌ์ฉ, ๋จ ์ค์ฒฉ ์์กด ์ด๋ฆ์ด ๊ธฐ๋ณธ
ํด๋์ค ๋ฆฌ์คํธ์ ์๊ฑฐ๋ ๋ฉค๋ฒ ์ด๊ธฐํ ๋ฆฌ์คํธ ๋ด
์ ๊ธฐ๋ณธ ํด๋์ค ์๋ณ์๋ก ์๋ ๊ฒฝ์ฐ์๋ ์์ธ
- 8. ํญ๋ชฉ 43 : ํ
ํ๋ฆฟ์ผ๋ก ๋ง๋ค์ด์ง
๊ธฐ๋ณธ ํด๋์ค ์์ ์ด๋ฆ์ ์ ๊ทผํ
๋ ๋ฐฉ๋ฒ
โข ์ปดํ์ผ๋ฌ๊ฐ ํด๋์ค ํ
ํ๋ฆฟ์
์ ์์ ๋ง์ฃผ์น ๋ ์ปดํ์ผ๋ฌ๋
๋์ฒด ์ด ํด๋์ค๊ฐ ์ด๋์ ํ์
๋ ๊ฒ์ธ์ง๋ฅผ ๋ชจ๋ฆ
โข ์์ ์์ ์์ Company๋ ํ
ํ๋ฆฟ ๋งค๊ฐ๋ณ์์ด๊ณ , ์ด ํ
ํ๋ฆฟ
๋งค๊ฐ๋ณ์๋ ๋์ค๊น์ง ๋ฌด์์ด
๋ ์ง ์ ์ ์์
โข Company๊ฐ ์ ํํ ๋ฌด์์ธ์ง
๋ ๋ชจ๋ฅด๋๋ฐ ์ฌ์ฉํ ์๋ ์์
โข template<typename Company>
class Msg{
public:
..
void sendClear(){ โฆ };
};
โฆ
class Log: public Msg{
sendClear();
};
โข ๋ค์์ ์ปดํ์ผ์ด ๋์ง ์๋ ์ฝ๋
์ด๋ค.
- 9. ๋ฌธ์ ํด๊ฒฐ ๋ฐฉ๋ฒ
โข ๊ธฐ๋ณธ ํด๋์ค ํจ์์ ๋ํ ํธ์ถ๋ฌธ ์์ โthis->โ๋ฅผ
๋ถ์ธ๋ค.
this->sendClear();
โข using ์ ์์ ํตํด ํด๊ฒฐ
using Msg<Company>::sendClear;
์ฆ ์ปดํ์ผ๋ฌ์์ sendClear๊ฐ ๊ธฐ๋ณธ ํด๋์ค์ ์
๋ค๊ณ ๊ฐ์ ํ๋ผ ๊ณ ์๋ ค์ค
- 10. ํญ๋ชฉ 43 ์ ๋ฆฌ
โข ํ์ ํด๋์ค ํ
ํ๋ฆฟ์์ ๊ธฐ๋ณธ ํด๋์ค ํ
ํ๋ฆฟ์
์ด๋ฆ์ ์ฐธ์กฐํ ๋๋ , โthis->โ๋ฅผ ์ ๋์ฌ๋ก ๋ถ์ธ๋ค
โข using ํค์๋๋ฅผ ์ด์ฉํ์ฌ ํจ์๋ฅผ ์ ์ธ( ์ด ํจ์
๋ ๊ธฐ๋ณธ ํด๋์ค์ ์กด์ฌํ๋ค) ํ์ฌ ๊ธฐ๋ณธ ํด๋์ค ํ
์ ๋ฌธ์ ๋ช
์์ ์ผ๋ก ์จ์ฃผ๋ ๊ฒ์ผ๋ก ํด๊ฒฐ ๊ฐ๋ฅ
- 11. ํญ๋ชฉ 44 : ๋งค๊ฐ๋ณ์์ ๋
๋ฆฝ์ ์ธ
์ฝ๋๋ ํ
ํ๋ฆฟ์ผ๋ก๋ถํฐ ๋ถ๋ฆฌ์ํค
์
โข ํ
ํ๋ฆฟ์ ์ฝ๋ฉ ์๊ฐ ์ ์ฝ, ์ฝ
๋ ์ค๋ณต ํํผ์ ์ด์ ์ด ์๋ค.
โข ๊ทธ๋ฌ๋ ์๋ฌด ์๊ฐ ์์ด ํ
ํ๋ฆฟ
์ ์ฌ์ฉํ๋ฉด ์ฝ๋ ๋น๋ํ๋ฅผ ์ด
๋ํ ์ ์๋ค.
-> ์ฑ๋ฅ ์ ํ ์ผ๊ธฐ
โข ์ฆ ํ
ํ๋ฆฟ์ ๊ตฌ์ฑํ ๋๋ ์ฝ๋
์ค๋ณต์ ํผํด์ผ๋ง ํ๋ค.
โข vector<int>
โข vector<long>
โข ์์ ๋ ๋ฉค๋ฒ ํจ์๋ ์๋ก ๋
๊ฐ๊ฒ ๋์ฌ ์ ์๋ค. ์ฆ ๋ฑ ์ฝ๋
๋น๋ํ๊ฐ ๋๊ธฐ ์ฝ๋ค.
- 12. ๋ฌธ์ ํด๊ฒฐ ๋ฐฉ๋ฒ
โข ํฌ์ธํฐ ํ์
์ ๋งค๊ฐ๋ณ์๋ก ์ทจํ๋ ๋์ผ ๊ณ์ด์
ํ
ํ๋ฆฟ๋ค ( list<int*>, list<const int*>,
list(SquareMatrix<long,3>*>๋ฑ ์ ์ด์ง ์์ค์์
๋ง ๋ณด๋ฉด ๋ฉค๋ฒ ํจ์ ์งํฉ์ ํ ๋ฒ๋ง ์จ๋ ๊ฐ๋ฅ
โข ๊ธฐ์ ์ ์ผ๋ก ํ์
์ ์ฝ์ด ์๊ฒฉํ ํฌ์ธํฐ(T* ํฌ์ธ
ํฐ)๋ฅผ ์จ์ ๋์ํ๋ ๋ฉค๋ฒํจ์๋ฅผ ๊ตฌํํ ๋๋ ํ
๋จ์์ ํ์
๋ฏธ์ ํฌ์ธํฐ๋ก ๋์ํ๋ ๋ฒ์ ์ ํธ
์ถ
- 13. ํญ๋ชฉ 44 ์ ๋ฆฌ
โข ํ
ํ๋ฆฟ์ ์ฌ์ฉํ๋ฉด ๋น์ท๋น์ทํ ํด๋์ค์ ํจ์๊ฐ
์ฌ๋ฌ ๋ฒ ๋ง๋ค์ด์ง๋ค ๋ฐ๋ผ์ ํ
ํ๋ฆฟ ๋ฐฐ๊ฐ๋ณ์์
์ข
์๋์ง ์์ ํ
ํ๋ฆฟ ์ฝ๋๋ ๋น๋ํ์ ์์ธ
โข ๋นํ์
ํ
ํ๋ฆฟ ๋งค๊ฐ๋ณ์๋ก ์๊ธฐ๋ ์ฝ๋ ๋น๋ํ
์ ๊ฒฝ์ฐ, ํ
๋ฏ๋ฆฟ ๋งค๊ฐ๋ณ์๋ฅผ ํจ์๋งค๊ฐ๋ณ์ ํน์
ํด๋์ค ๋ฐ์ดํฐ ๋ฉค๋ฒ๋ก ๋์ฒดํ์ฌ ๋น๋ํ๋ฅผ ์์จ
๊ฐ๋ฅ์ฑ ์์
โข ํ์
๋งค๊ฐ๋ณ์๋ก ์๊ธฐ๋ ์ฝ๋ ๋น๋ํ์ ๊ฒฝ์ฐ, ๋
์ผํ ์ด์ง ํํ๊ตฌ์กฐ๋ฅผ ๊ฐ์ง๊ณ ์ธ์คํด์คํ๋๋
ํ์
๋ค์ด ํ ๊ฐ์ง ํจ์ ๊ตฌํ์ ๊ณต์ ํ๊ฒ ๋ง๋ฆ์ผ
๋ก ๋น๋ํ๋ฅผ ๊ฐ์์ํฌ ์ ์์
- 14. ํญ๋ชฉ 45 : ํธํ๋๋ ๋ชจ๋ ํ์
์
๋ฐ์๋ค์ด๋ ๋ฐ๋ ํ
ํ๋ฆฟ์ด ๋ต์ด
๋ค
โข ํ์
๋ณํ์ ์ค๋งํธ ํฌ์ธํฐ๋ฅผ
์จ์ ํ๋ ค๋ฉด ๋ฌด์ฒ ๊น๋ค๋กญ๋ค.
โข ๋์ ๊ธฐ๋ณธ ํฌ์ธํฐ๋ ์์์ ๋ณ
ํ์ ์ง์ํ์ฌ ํ์ํด๋์ค ใ
ํฌ์ธํฐ๊ฐ ์์์ ์ผ๋ก ๊ธฐ๋ณธ ํด
๋์ค ํฌ์ธํฐ๋ก ๋ณํ๊ฐ๋ฅํ๋ค
โข ์ฆ ๊ธฐ๋ณธ ํฌ์ธํฐ๊ฐ ํ์
๋ณํ์
์กฐ๊ธ ๋ ์ฉ์ดํ๋ค
โข class Top { โฆ };
class Middle : public Top { โฆ };
class Bottom: public Middle { โฆ };
Top *pt1 = new Middle;
Top *pt2 = new Bottom
์ฆ, ๊ธฐ๋ณธ ํฌ์ธํฐ๋ฅผ ์ด์ฉํ๋ฉด ์์
์ ๋ณํ์ ํตํด ๊ธฐ๋ณธํด๋์ค ํฌ์ธ
ํฐ๋ก ํ์ ํด๋์ค๋ฅผ ๊ฐ๋ฆฌํฌ ์ ์
์
- 15. ์์ฑ์๋ฅผ ๋ง๋ค์ด๋ด๋ ํ
ํ
๋ฆฟ์ ์ฐ์
โข ์์ฑ์ ํ
ํ๋ฆฟ์ ๋ฉค๋ฒ ํจ์ ํ
ํ๋ฆฟ์ ํ๊ฐ์ง ์์ด๋ค
template<typename T>
class SmartPtr {
public:
template<typename U >
SmartPtr( const SmartPtr<U>& other);
};
๋ชจ๋ T ํ์
๋ฐ ๋ชจ๋ U ํ์
์ ๋ํด์ SmartPtr<T>๊ฐ์ฒด
๊ฐ SmartPtr<U>๋ก ๋ถํฐ ์์ฑ๋ ์ ์์
โข ์ด๋ฐ ๊ผด์ ์์ฑ์๋ฅผ ๊ฐ๋ฆฌ์ผ ์ผ๋ฐํ ๋ณต์ฌ ์์ฑ์๋ผ ํ๋ค
โข ๊ธฐ๋ณธ ํฌ์ธํฐ์ฒ๋ผ SmartPointerํ์ฉ ๊ฐ๋ฅ
- 16. ํญ๋ชฉ 45 ์ ๋ฆฌ
โข ํธํ๋๋ ๋ชจ๋ ํ์
์ ๋ฐ์๋ค์ด๋ ๋ฉค๋ฒ ํจ์๋ฅผ
๋ง๋ค๋ ค๋ฉด ๋ฉค๋ฒ ํจ์ ํ
ํ๋ฆฟ์ ์ฌ์ฉํ๋ค์
โข ์ผ๋ฐํ๋ ๋ณต์ฌ ์์ฑ ์ฐ์ฐ๊ณผ ์ผ๋ฐํ๋ ๋์
์ฐ์ฐ
์ ์ํด ๋ฉค๋ฒ ํ
ํ๋ฆฟ์ ์ ์ธํ๋ค ํ๋๋ผ๋, ๋ณดํต
์ ๋ณต์ฌ ์์ฑ์์ ๋ณต์ฌ ๋์
์ฐ์ฐ์๋ ์ฌ์ ํ ์ง
์ ์ ์ธํด์ผ ํ๋ค
- 17. ํญ๋ชฉ 46 : ํ์
๋ณํ์ด ๋ฐ๋์งํ ๊ฒฝ์ฐ
์๋ ๋น๋ฉค๋ฒ ํจ์๋ฅผ ํด๋์ค ํ
ํ๋ฆฟ
์์ ์ ์
โข ์์ ๋ฅผ ๋ณด๋ฉด ์ปดํ์ผ์ด ๋์ง ์
๋๋ค
โข ํ
ํ๋ฆฟ ๋ฒ์ ์ Rational์๋
์ค์ ๋ก ์ด๋ค ํจ์๋ฅผ ํธ์ถํ๋ ค
๋์ง์ ๋ํด ์ปดํ์ผ๋ก์๋ ์
์ ์๋ค ๋จ์ง ์ปดํ์ผ๋ฌ๋
operator*๋ผ๋ ์ด๋ฆ์ ํ
ํ๋ฆฟ
์ผ๋ก๋ถํฐ ์ธ์คํด์คํ ํ ํจ์
๋ฅผ ๊ฒฐ์ ํ๊ธฐ ์ํด ๋
ธ๋ ฅ
โข ํ์ง๋ง ์ปดํ์ผ๋ฌ๋ T๋ฅผ ์์
์ผ ์ปดํ์ผ์ด ๊ฐ๋ฅ
โข template<typename T>
class Rational {
public:
Rational(const T& numerator = 0, const T&
denominator = 1);
โฆ
};
template<typename T>
const Rational<T> operator*(const Rational<T>&
lhs, const Rational<T>& rhs>
Rational<int> oneHalf(1,2);
Rational<int> result = oneHalf *2;
์ด ์ฝ๋๋ ์ปดํ์ผ์ด ๋์ง ์๋๋ค.
- 18. operator* ํจ์์ ๋ณธ๋ฌธ์ ์
์ธ๋ถ์ ๋ถ์ด์โข class Rational {
public:
โฆ
friend const Rational operator* (const
Rational& lhs, const Rational& rhs) {
return Rational( lhs.numerator() *
rhs.numerator(),
lhs.denominator() *
rhs.denominator() );
โข ํ๋ ๋ ํจ์๋ฅผ ์ ์ธํ์ง๋ง ํด๋์ค์ public์์ญ์ด
์๋ ๋ถ๋ถ์ ์ ๊ทผํ๋ ๊ฒ๊ณผ ํ๋ ๋ ๊ถํ์ ์๋ฌด๋ฐ
์๊ด์ด ์์
- 19. ํญ๋ชฉ 46 ์ ๋ฆฌ
โข ๋ชจ๋ ๋งค๊ฐ๋ณ์์ ๋ํด ์์์ ํ์
๋ณํ์ ์ง์
ํ๋ ํ
ํ๋ฆฟ๊ณผ ๊ด๊ณ๊ฐ ์๋ ํจ์๋ฅผ ์ ๊ณตํ๋ ํด
๋์ค ํ
ํ๋ฆฟ์ ๋ง๋ค๋ ค๊ณ ํ๋ค๋ฉด, ์ด๋ฐ ํจ์๋ ํด
๋์ค ํ
ํ๋ฆฟ ์์ ํ๋ ๋ ํจ์๋ก์ ์ ์
- 20. ํญ๋ชฉ 47 : ํ์
์ ๋ํ ์ ๋ณด๊ฐ
ํ์ํ๋ค๋ฉด ํน์ฑ์ ๋ณด ํด๋์ค๋ฅผ
์ฌ์ฉํ์
โข ํน์ฑ์ ๋ณด๋ ์ปดํ์ผ ๋์ค์ ์ด๋ค ์ฃผ์ด์ง ํ์
์
์ ๋ณด๋ฅผ ์ป์ ์ ์๊ฒ ํ๋ ๊ฐ์ฒด๋ฅผ ์ง์นญํ๋ ๊ฐ๋
โข ํน์ฑ์ ๋ณด๋ ๋ฌธ๋ฒ๊ตฌ์กฐ๋ ํค์๋๊ฐ ์๋๋ค
โข C++ ํ๋ก๊ทธ๋๋จธ๋ค์ ๊ตฌํ ๊ธฐ๋ฒ์ด๋ฉฐ ๊ด๋ก
- 21. ํน์ฑ์ ๋ณด ํด๋์ค์ ์ค๊ณ ๋ฐ
๊ตฌํ ๋ฐฉ๋ฒ
โข ๋ค๋ฅธ ์ฌ๋์ด ์ฌ์ฉํ๋๋ก ์ด์ด ์ฃผ๊ณ ์ถ์ ํ์
๊ด
๋ จ ์ ๋ณด๋ฅผ ํ์ธ( ์๋ฅผ ๋ค์ด, ๋ฐ๋ณต์๋ผ๋ฉด ๋ฐ๋ณต์
๋ฒ์ฃผ ๋ฑ)
โข ๊ทธ ์ ๋ณด๋ฅผ ์๋ณํ๊ธฐ ์ํ ์ด๋ฆ์ ์ ํ
โข ์ง์ํ๊ณ ์ ํ๋ ํ์
๊ด๋ จ ์ ๋ณด๋ฅผ ๋ด์ ํ
ํ๋ฆฟ
๋ฐ ๊ทธ ํ
ํ๋ฆฟ์ ํปํ๋ฒ์ ์ ์ ๊ณต
- 22. ํญ๋ชฉ 47 ์ ๋ฆฌ
โข ํน์ฑ์ ๋ณด ํด๋์ค๋ ์ปดํ์ผ ๋์ค์ ์ฌ์ฉํ ์ ์
๋ ํ์
๊ด๋ จ ์ ๋ณด๋ฅผ ๋ง๋ค์ด๋
โข ํน์ฑ์ ๋ณด ํด๋์ค๋ ํ
ํ๋ฆฟ ๋ฐ ํ
ํ๋ฆฟ ํน์ ๋ฒ์
์ ์ฌ์ฉํ์ฌ ๊ตฌํ
โข ํจ์ ์ค๋ฒ๋ก๋ฉ ๊ธฐ๋ฒ๊ณผ ๊ฒฐํฉํ์ฌ ํน์ฑ์ ๋ณด ํด๋
์ค๋ฅผ ์ฌ์ฉํ๋ฉด ์ปดํ์ผ ํ์์ ๊ฒฐ์ ๋๋ ํ์
๋ณ
ifโฆelse์ ๊ฒ๋ฌธ์ ๊ตฌ์ฌ ๊ฐ๋ฅ
- 23. ํญ๋ชฉ 48 : ํ
ํ๋ฆฟ ๋ฉํํ๋ก๊ทธ๋๋ฐ
โข ํ
ํ๋ฆฟ ๋ฉํํ๋ก๊ทธ๋๋ฐ์ ์ปดํ
์ผ ๋์ค์ ์คํ๋๋ ํ
ํ๋ฆฟ ๊ธฐ
๋ฐ์ ํ๋ก๊ทธ๋จ
โข ๋ค๋ฅธ ๋ฐฉ๋ฒ์ผ๋ก๋ ๊น๋ค๋กญ๊ฑฐ๋
๋ถ๊ฐ๋ฅํ ์ผ์ ๊ต์ฅํ ์ฝ๊ฒ ํ
๊ฐ๋ฅ์ฑ์ด ์๊น
โข ์ปดํ์ผ์ด ์งํ๋๋ ๋์์ ์ค
ํ๋๊ธฐ ๋๋ฌธ์, ๊ธฐ์กด ์์
์ ๋ฐ
ํ์ ์์ญ์์ ์ปดํ์ผ ํ์ ์
์ญ์ผ๋ก ์ ํ ๊ฐ๋ฅ
โข ๋ชจ๋ ๋ฉด์์ ํจ์จ์ด ์ข์ ๊ฐ๋ฅ
์ฑ์ด ์์
-> ์ปดํ์ผ ํ์์ ๋์์ ํด์
์คํ์ฝ๋๊ฐ ์์์ง๊ณ ์คํ์๊ฐ
๋ ์งง์์ง, ๋ฉ๋ชจ๋ฆฌ๋ ์ ๊ฒ๋จน์
โข template<unsigned n>
struct Factorial {
enum { value = n* Factorial<n-1>::value);
};
template<>
struct Factorial<0>{
enum { value = 1 };
};
ํ
ํ๋ฆฟ ๋ฉํํ๋ก๊ทธ๋๋ฐ์ผ๋ก factorial ์์ฑ
Factorial<5>::value ๋ 120์ ๋ฐํ์ ๊ณ์ฐ
์์ด ์ถ๋ ฅ!
- 24. ๋ฉํํ๋ก๊ทธ๋๋ฐ์ด ์ข์
์
โข ์น์ ๋จ์์ ์ ํ์ฑ ํ์ธ : ๊ณผํ๊ธฐ์ ๋ถ์ผ์ ์์ฉ
ํ๋ก๊ทธ๋จ์ ๋ง๋ค ๋ ์ ๋ฆฌ
โข ํ๋ ฌ ์ฐ์ฐ์ ์ต์ ํ
โข ๋ง์ถค์ ๋์์ธ ํจํด ๊ตฌํ์ ์์ฑ - ๋์์ธ ํจํด์
๋ํ ๊ตฌํ๋ฐฉ๋ฒ์ด ์ฌ๋ฌ๊ฐ์ง์ผ ๋ ๊ธฐ๋ฐ์ ์ค๊ณํ
์ ์์
- 25. ํญ๋ชฉ 48 ์ ๋ฆฌ
โข ํ
ํ๋ฆฟ ๋ฉํํ๋ก๊ทธ๋๋ฐ์ ๊ธฐ์กด ์์
์ ๋ฐํ์์
์ ์ปดํ์ผ ํ์์ผ๋ก ์ ํํ๋ ํจ๊ณผ๋ฅผ ๋. ๋ฐ๋ผ์
TMP๋ฅผ ์ฐ๋ฉด ์ ํ ์๋ฌ ํ์ง์ ๋์ ๋ฐํ์ ํจ์จ
์ ๊ฐ์ง ์ ์์
โข TMP๋ ์ ์ฑ
์ ํ์ ์กฐํฉ์ ๊ธฐ๋ฐํ์ฌ ์ฌ์ฉ์ ์
์ ์ฝ๋๋ฅผ ์์ฑํ๋ ๋ฐ ์ธ ์ ์์ผ๋ฉฐ, ๋ํ ํน์
ํ์
์ ๋ํด ๋ถ์ ์ ํ ์ฝ๋๊ฐ ๋ง๋ค์ด์ง๋ ๊ฒ์
๋ง๋ ๋ฐ๋ ์ธ ์ ์์
- 26. ํญ๋ชฉ 49 : new์ฒ๋ฆฌ์์ ๋์ ์
๋ฆฌ๋ฅผ ์ ๋๋ก ์ดํดํ์
โข ์ฌ์ฉ์๊ฐ ๋ถํํ ๋งํผ์ ๋ฉ๋ชจ
๋ฆฌ๋ฅผ ํ ๋นํด ์ฃผ์ง ๋ชปํ๋ฉด
operator new ๋ ์ถฉ๋ถํ ๋ฉ๋ชจ
๋ฆฌ๋ฅผ ์ฐพ์๋ผ ๋๊น์ง new ์ฒ๋ฆฌ
์๋ฅผ ๋ํ์ดํด์ ํธ์ถ
โข Class X{
public:
static void outOfMemory();
โฆ
};
Class Y{
public:
static void outOfMemory();
โฆ
};
X* p1 = new X;
Y* p2 = new Y;
๋ฉ๋ชจ๋ฆฌ ํ ๋น์ด ์คํจํ์ ๊ฒฝ์ฐ ๋ ๊ฒฝ์ฐ, ๊ฐ ํด๋์ค๋
OutofMemory๋ฅผ ํธ์ถ
- 27. new ์ฒ๋ฆฌ์ ํจ์ ์ฒ๋ฆฌ์ ์ฃผ
์ํ ์
โข ์ฌ์ฉํ ์ ์๋ ๋ฉ๋ชจ๋ฆฌ๋ฅผ ๋ ๋ง์ด ํ๋ณด
โข ๋ค๋ฅธ new ์ฒ๋ฆฌ์๋ฅผ ์ค์น
โข new ์ฒ๋ฆฌ์์ ์ค์น๋ฅผ ์ ๊ฑฐ - null pointer๋ฅผ ๋๊น
โข ์์ธ๋ฅผ ๋์ง - bad_alloc๋ฑ์ ์์ธ๋ฅผ ๋์ง
โข ๋ณต๊ทํ์ง ์์ - abort ํน์ exit ghcnf
- 28. ํญ๋ชฉ 49 ์ ๋ฆฌ
โข set_new_handler ํจ์๋ฅผ ์ฐ๋ฉด ๋ฉ๋ชจ๋ฆฌ ํ ๋น ์์ฒญ
์ด ๋ง์กฑ๋์ง ๋ชปํ์ ๋ ํธ์ถ๋๋ ํจ์๋ฅผ ์ง์ ํ
์ ์์
โข ์์ธ๋ถ๊ฐ new๋ ์ํฅ๋ ฅ์ด ์ ํ๋์ด ์์ - ๋ฉ๋ชจ
๋ฆฌ ํ ๋น ์์ฒด์๋ง ์ ์ฉ๋๊ธฐ ๋๋ฌธ. ์ดํ์ ํธ์ถ๋
๋ ์์ฑ์์๋ ์ผ๋ง๋ ์ง ์์ธ๋ฅผ ๋์ง ์ ์์
- 29. ํญ๋ชฉ 50 :new ๋ฐ delete๋ฅผ ์ธ์
๋ฐ๊ฟ์ผ ์ข์ ์๋ฆฌ๋ฅผ ๋ค์์ง ํ์
โข ์ปดํ์ผ๋ฌ๊ฐ ์ค operator new์ operator delete๋ฅผ ๋ฐ๊พธ๊ณ ์ถ์ ์ด์
?
โข ์๋ชป๋ ํ ์ฌ์ฉ์ ํ์งํ๊ธฐ ์ํด
โข ํจ์จ์ ํฅ์์ํค๊ธฐ ์ํด
โข ๋์ ํ ๋น ๋ฉ๋ชจ๋ฆฌ์ ์ค์ ์ฌ์ฉ์ ๊ดํ ํต๊ณ ์ ๋ณด๋ฅผ ์์งํ๊ธฐ ์ํด
- 30. ๋ค์ํ๋ฒ ํ์ํ ์กฐ๊ฑด ์ฒด
ํฌโข ์๋ชป๋ ํ ์ฌ์ฉ์ ํ์งํ๊ธฐ ์ํด
โข ๋์ ํ ๋น ๋ฉ๋ชจ๋ฆฌ์ ์ค์ ์ฌ์ฉ์ ๊ดํ ํต๊ณ ์ ๋ณด๋ฅผ ์
์งํ๊ธฐ ์ํดํ ๋น ๋ฐ ํด์ ์๋ ฅ์ ๋์ด๊ธฐ ์ํด
โข ๊ธฐ๋ณธ ๋ฉ๋ชจ๋ฆฌ ๊ด๋ฆฌ์์ ๊ณต๊ฐ ์ค๋ฒํค๋๋ฅผ ์ค์ด๊ธฐ ์ํด
โข ์ ๋นํ ํํํ ๊ธฐ๋ณธ ํ ๋น์์ ๋ฐ์ดํธ ์ ๋ ฌ ๋์์ ๋ณด์ฅ
ํ๊ธฐ ์ํด
โข ์์์ ๊ด๊ณ๋ฅผ ๋งบ๊ณ ์๋ ๊ฐ์ฒด๋ค์ ํ ๊ตฐ๋ฐ์ ๋๋ํ
๋ชจ์ ๋๊ธฐ ์ํด
โข ๊ทธ๋๊ทธ๋ ์ํ๋ ๋์์ ์ํํ๋๋ก ํ๊ธฐ ์ํด
- 31. ํญ๋ชฉ 50 ์ ๋ฆฌ
โข ๊ฐ๋ฐ์๊ฐ ์ค์ค๋ก ์ฌ์ฉ์ ์ ์ new ๋ฐ delete๋ฅผ
์์ฑํ๋ ๋ฐ๋ ์ฌ๋ฌ ๊ฐ์ง ๋๋ฆ๋๋ก ํ๋นํ ์ด์
๊ฐ ์๋ค ์ฌ๊ธฐ์๋ ์ฑ๋ฅ์ ํฅ์์ํค๋ ค๋ ๋ชฉ์ , ํ
์ฌ์ฉ์์ ์๋ฌ๋ฅผ ๋๋ฒ๊น
ํ๋ ค๋ ๋ชฉ์ , ํ์ฌ์ฉ ์
๋ณด๋ฅผ ์์งํ๋ ค๋ ๋ชฉ์ ๋ฑ์ด ํฌํจ
- 32. ํญ๋ชฉ 51 : new ๋ฐ delete๋ฅผ ์์ฑํ
๋ ๋ฐ๋ผ์ผ ํ ๊ธฐ์กด์ ๊ด๋ก๋ฅผ ์ ์
์๋์โข operator new์ ๋ฐํ ๊ฐ ๋ถ๋ถ์ ์์ฒญ๋ ๋ฉ๋ชจ๋ฆฌ๋ฅผ ๋ง๋ จํด ์ค ์ ์
์ผ๋ฉด ๊ทธ ๋ฉ๋ชจ๋ฆฌ์ ๋ํ ํฌ์ธํฐ๋ฅผ ๋ฐํ, ๋ฐํํ ์ ์์ผ๋ฉด bad_alloc
ํธ์ถ
โข operator new ๋ฉค๋ฒ ํจ์๋ ํ์ ํด๋์ค ์ชฝ์ผ๋ก ์์์ด ๋๋ ํจ์
โข ๋ฐฐ์ด์์ ๋ช ๊ฐ ์ ๊ฐ์ฒด๊ฐ ๋ค์ด๊ฐ ์ง ๊ณ์ผํ๋ ๊ฒ ์ด๋ ค์ -> ๊ฐ์ฒด
ํ๋๊ฐ ์ผ๋ง๋ ํฐ์ง๋ฅผ ํ์ ํ ๋ฐฉ๋ฒ์ด ์์
โข operator new[]์ ๋์ด๊ฐ๋ size_t ํ์
์ ์ธ์๋ ๊ฐ์ฒด๋ค์ ๋ด๊ธฐ์
๋ฑ ๋ง๋ ๋ฉ๋ชจ๋ฆฌ ์๋ณด๋ค ๋ ๋ง๊ฒ ์ค์ ๋์ด ์์ ์๋ ์์
โข ๊ฐ์ ์๋ฉธ์๊ฐ ์๋ ๊ธฐ๋ณธ ํด๋์ค๋ก๋ถํฐ ํ์๋ ํด๋์ค์ ๊ฐ์ฒด๋ฅผ
์ญ์ ํ๋ ค๊ณ ํ ๊ฒฝ์ฐ์๋ operator delete๋ก C++๊ฐ ๋๊ธฐ๋ size_t๊ฐ
์ด ์ํฐ๋ฆฌ ์ผ ์ ์์
- 33. ํญ๋ชฉ 51 ์ ๋ฆฌ
โข ๊ด๋ ์ ์ผ๋ก operator new ํจ์๋ ๋ฉ๋ชจ๋ฆฌ ํ ๋น์
๋ฐ๋ณตํด์ ์๋ํ๋ ๋ฌดํ ๋ฃจํ๋ฅผ ๊ฐ์ ธ์ผ ํ๊ณ , ๋ฉ
๋ชจ๋ฆฌ ํ ๋น ์๊ตฌ๋ฅผ ๋ง์กฑ์ํฌ ์ ์์ ๋ new์ฒ๋ฆฌ
์๋ฅผ ํธ์ถํด์ผ ํ๋ฉฐ, 0๋ฐ์ดํธ์ ๋ํ ๋์ฑ
๋ ์
์ด์ผ ํจ
โข ํด๋์ค ์ ์ฉ ๋ฒ์ ์ ์์ ์ด ํ ๋นํ๊ธฐ๋ก ์์ ๋
ํฌ๊ธฐ๋ณด๋ค ๋ ํฐ ๋ฉ๋ชจ๋ฆฌ ๋ธ๋ก์ ๋ํ ์๊ตฌ๋ ์ฒ๋ฆฌ
โข operator delete ํจ์๋ ๋ ํฌ์ธํฐ๊ฐ ๋ค์ด์์ ๋
์๋ฌด ์ผ๋ ํ์ง ์์์ผ ํจ
- 34. ํญ๋ชฉ 52 : ์์น์ง์ new๋ฅผ ์์ฑ
ํ๋ค๋ฉด ์์น์ง์ delete๋ ๊ฐ์ด
์ค๋นํ์
โข ๋ฐํ์ ์์คํ
์ด ํด์ฃผ์ด์ผ ํ
๋ ์ผ์ ์์ ์ด ํธ์ถํ
operator new ํจ์์ ์ง์ด ๋
๋ ๋ฒ์ ์ operator deleteํจ
์๋ฅผ ํธ์ถ
โข ๋ฐํ์ ์์คํ
์ ํธ์ถ๋
operator new๊ฐ ๋ฐ์๋ค์ด๋
๋งค๊ฐ๋ณ์์ ๊ฐ์ ๋ฐ ํ์
์ด ๋
๊ฐ์ ๋ฒ์ ์ operator delete
๋ฅผ ์ฐพ๊ณ ์ฐพ์๋์ผ๋ฉด ํธ์ถ.
โข ์ฆ ์ง์ ์ด๋ฃจ๋ ์๊ทธ๋์ฒ
โข Widget *pw = new Widget
์ด ์คํ์ด ๋๋ฉด ์ฐ์ ๋ฉ๋ชจ๋ฆฌ ํ ๋น์
์ํด operator new๊ฐ ํธ์ถ๋๊ณ , ๊ทธ ๋ค
๋ฅผ ์ด์ด Widget์ ๊ธฐ๋ณธ ์์ฑ์ ํธ์ถ
์ด๋ ๊ธฐ๋ณธ ์์ฑ์ ํธ์ถ์ ํ๋ฉด์ ์์ธ
๊ฐ ๋ฐ์ํ๋ค๊ณ ํ๋ฉด ์ด ๋ฉ๋ชจ๋ฆฌ๋ ํด์
๋ฅผ ํด์ฃผ์ด์ผํ๋ค!
-> C++ ๋ฐํ์ ์์คํ
์์ ๋งก์์ ํจ
- 35. ์์น์ง์ ์ฃผ์ ํ ์
โข ๋งค๊ฐ๋ณ์๋ฅผ ์ถ๊ฐ๋ก ๋ฐ๋ new๋ฅผ ์์น์ง์ ์ด๋ผ๊ณ ํ๋ค
โข operator delete์ญ์ ์ด ์์น์ง์ ๊ณผ ๋๊ฐ์ ์๊ทธ๋์ฒ๋ฅผ ๊ฐ์ง ๊ฒ์ด
์ด์ผํ๋ค
-> ๊ทธ๋ ์ง ์์ผ๋ฉด ์ด๋ค delete๋ฅผ ํธ์ถํ๋์ง ๊ฐํก์งํก ํ๊ธฐ ๋๋ฌธ์ด
๋ค
โข ๋ฐ๋ผ์ ์์น์ง์ ์ ํ๋ฉด ๊ทธ์ ๋ง๋ delete๋ ์์ฑํด์ผ ํ๋ค
- 36. ํญ๋ชฉ 52 ์ ๋ฆฌ
โข operator newํจ์์ ์์น์ง์ ๋ฒ์ ์ ๋ง๋ค ๋๋
์ด ํจ์์ ์ง์ ์ด๋ฃจ๋ ์์น์ง์ ๋ฒ์ ์
operator deleteํจ์๋ ๊ผญ ๋ง๋ค์ด์ผ ํจ -> ๋ฉ๋ชจ๋ฆฌ
๋์ถ ์ํ์ฑ
โข new ๋ฐ delete์ ์์น์ง์ ๋ฒ์ ์ ์ ์ธํ ๋๋,
์๋ํ ๋ฐ๋ ์๋๋ฐ ์ด๋ค์ ํ์ค ๋ฒ์ ์ด ๊ฐ๋ ค์ง
๋ ์ผ์ด ์๊ธฐ์ง ์๋๋ก ์ฃผ์
- 37. ํญ๋ชฉ 53: ์ปดํ์ผ๋ฌ ๊ฒฝ๊ณ ๋ฅผ
์ง๋์น์ง ๋ง์
โข ์ปดํ์ผ๋ฌ ๊ฒฝ๊ณ ๋ฅผ ์ฝ๊ฒ ์ง๋์น์ง ๋ง์์ผ ํ๋ค ->
ํ์ ๋ถ๋ช
ํ ๋ฌธ์ ๊ฐ ์๊ธฐ๋ ์ผ์ด ์ญ์คํ๊ตฌ
โข ์ปดํ์ผ๋ฌ ๊ฒฝ๊ณ ์ ๋๋ฌด ์์งํ๋ ์ผ์ ํ์ง ๋ง ๊ฒ
-> ์ปดํ์ผ๋ฌ๋ง๋ค ๊ฒฝ๊ณ ๋ฅผ ๋ด๋ ๋ถ๋ถ์ด ๋ค๋ฅด๊ธฐ ๋
๋ฌธ์ด๋ค.
- 38. ํญ๋ชฉ 54: TR1์ ํฌํจํ ํ์ค ๋ผ
์ด๋ธ๋ฌ๋ฆฌ ๊ตฌ์ฑ์์์ ํธ์ํ ์น
๊ตฌ๊ฐ ๋์
โข ํ์ค ํ
ํ๋ฆฟ ๋ผ์ด๋ธ๋ฌ๋ฆฌ (STL) : ์ปจํ
์ด๋, ๋ฐ๋ณต
์, ์๊ณ ๋ฆฌ์ฆ ,ํจ์๊ฐ์ฒด ๋ฑ์ ๋ด๊ณ ์์
โข iostream, ๊ตญ์ ํ ์ง์, ์์น ์ฒ๋ฆฌ ์ง์
โข ์์ธ ํด๋์ค ๊ณํต ์ง์
โข ์ด๋ฌํ ๋ผ์ด๋ธ๋ฌ๋ฆฌ ๊ตฌ์ฑ์์๋ฅผ ์ฌ์ฉํ์ฌ ์ฝ๋ฉ์
ํจ์จ์ฑ์ ํค์ฐ์
- 39. ํญ๋ชฉ 55: ๋ถ์คํธ๋ฅผ ๋ ์ฌ๋ฌ
๋ถ ๊ฐ๊น์ด์โข ๋ถ์คํธ๋ C++ ๊ฐ๋ฐ์๋ค์ ๋จ์ฒด์ด์ ๋ฌด๋ฃ ๋ค์ด๋ก๋๊ฐ ๊ฐ
๋ฅํ C++๋ผ์ด๋ธ๋ฌ๋ฆฌ ์งํฉ์ ๋์์ ์ผ์ปซ๋ ๊ณ ์ ๋ช
์ฌ ->
์น์ฌ์ดํธ http://boost.org์ ๋ฐฉ๋ฌธํ์ฌ ๋ง๋ ์ ์์
โข ๋ถ์คํธ๋ C++ํ์คํ ์์ํ์ ๋ฐ์ ํ๊ณ ์ํฅ๋ ฅ์๋ ๊ด
๊ผ ์ ์ง
โข ๋ผ์ด๋ธ๋ฌ๋ฆฌ ์น์ธ ์ฌ์ฌ๋ ๊ณต๊ฐ ๋๋ฃ ์ฌ์ฌ์ ๊ธฐ๋ฐ์ ๋๊ณ
์์
โข ๋ถ์คํธ ๋ผ์ด๋ธ๋ฌ๋ฆฌ ๊ตฐ๋จ์ ์์ฒญ๋๊ฒ ์ ์ฉํ๊ฒ ์ฐ์
โข ๋ฌธ์์ด ๋ฐ ํ
์คํธ์ฒ๋ฆฌ, ์ปจํ
์ด๋, ํจ์ ๊ฐ์ฒด ๋ฐ ๊ณ ์ฐจ ํ๋ก
๊ทธ๋๋ฐ, ์ผ๋ฐํ ํ๋ก๊ทธ๋๋ฐ, ํ
ํ๋ฆฟ ๋ฉํ ํ๋ก๊ทธ๋๋ฐ, ์
ํ ๋ฐ ์์น์กฐ์, ์ ํ์ฑ ์ ์ง ๋ฐ ํ
์คํธ, ์๋ฃ๊ตฌ์กฐ, ํ ์ธ
์ด์์ ์ฐ๋ ์ง์, ๋ฉ๋ชจ๋ฆฌ ๋ฑ๋ฑ