Download free for 30 days
Sign in
Upload
Language (EN)
Support
Business
Mobile
Social Media
Marketing
Technology
Art & Photos
Career
Design
Education
Presentations & Public Speaking
Government & Nonprofit
Healthcare
Internet
Law
Leadership & Management
Automotive
Engineering
Software
Recruiting & HR
Retail
Sales
Services
Science
Small Business & Entrepreneurship
Food
Environment
Economy & Finance
Data & Analytics
Investor Relations
Sports
Spiritual
News & Politics
Travel
Self Improvement
Real Estate
Entertainment & Humor
Health & Medicine
Devices & Hardware
Lifestyle
Change Language
Language
English
Espaรฑol
Portuguรชs
Franรงais
Deutsche
Cancel
Save
Submit search
EN
Uploaded by
Dong Chan Shin
471 views
Effective c++ chapter1 2_dcshin
This content wrote for Advanced C++ Class in NHN NEXT. 2014. spring-summer semester
Technology
โฆ
Read more
1
Save
Share
Embed
Embed presentation
Download
Download to read offline
1
/ 24
2
/ 24
3
/ 24
4
/ 24
5
/ 24
6
/ 24
7
/ 24
8
/ 24
9
/ 24
10
/ 24
11
/ 24
12
/ 24
13
/ 24
14
/ 24
15
/ 24
16
/ 24
17
/ 24
18
/ 24
19
/ 24
20
/ 24
21
/ 24
22
/ 24
23
/ 24
24
/ 24
More Related Content
PDF
Effective c++ chapter 1,2 ์์ฝ
by
Nam Hyeonuk
ย
PPTX
Effective C++ Chaper 1
by
์ฐ์ฐ ๊น
ย
PPTX
Effective c++ ์ ๋ฆฌ 1~2
by
Injae Lee
ย
PDF
More effective c++ chapter1 2_dcshin
by
Dong Chan Shin
ย
PDF
More effective c++ แแ กแผแแ ฉแจ30แแ ฎแแ ฅ
by
Dong Chan Shin
ย
PPTX
์ดํํฐ๋ธ C++ ๊ณต๋ถ
by
quxn6
ย
PDF
แแ กแจแแ ญแแ ฆแแ ฅ แแ ขแแ ฎแแ ต แแ กแญแแ ณแซ C
by
Heesuk Kang
ย
PDF
Effective c++ chapter3, 4 ์์ฝ๋ณธ
by
Dong Chan Shin
ย
Effective c++ chapter 1,2 ์์ฝ
by
Nam Hyeonuk
ย
Effective C++ Chaper 1
by
์ฐ์ฐ ๊น
ย
Effective c++ ์ ๋ฆฌ 1~2
by
Injae Lee
ย
More effective c++ chapter1 2_dcshin
by
Dong Chan Shin
ย
More effective c++ แแ กแผแแ ฉแจ30แแ ฎแแ ฅ
by
Dong Chan Shin
ย
์ดํํฐ๋ธ C++ ๊ณต๋ถ
by
quxn6
ย
แแ กแจแแ ญแแ ฆแแ ฅ แแ ขแแ ฎแแ ต แแ กแญแแ ณแซ C
by
Heesuk Kang
ย
Effective c++ chapter3, 4 ์์ฝ๋ณธ
by
Dong Chan Shin
ย
What's hot
PPTX
์ดํํฐ๋ธ C++ (7~9)
by
์ต์ฑ ์กฐ
ย
PPTX
More effective c++ 2
by
ํ์ฐฌ ์
ย
PPTX
์ดํํฐ๋ธ C++ ์คํฐ๋
by
quxn6
ย
PPTX
์ดํํฐ๋ธ C++ 5,6 ์ฅ ์คํฐ๋
by
quxn6
ย
PDF
C++ Advanced ๊ฐ์ 4์ฃผ์ฐจ
by
HyunJoon Park
ย
PPTX
2016 hack festival igrus
by
Jinookawk
ย
PPTX
Effective c++(chapter 5,6)
by
๋ฌธ์ต ์ฅ
ย
PPTX
Effective c++ 1,2
by
์ธ๋น ์
ย
PPTX
Effective c++chapter1 and2
by
์ฑ์ฐ ๊น
ย
PPTX
Effective c++ 1
by
ํ์ฐฌ ์
ย
PPTX
Effective c++chapter4
by
์ฑ์ฐ ๊น
ย
PPT
effective c++ chapter 3~4 ์ ๋ฆฌ
by
Injae Lee
ย
PPTX
Effective c++ 2
by
ํ์ฐฌ ์
ย
PPTX
Effective c++ 4
by
ํ์ฐฌ ์
ย
PPTX
Effective c++ ์ ๋ฆฌ chapter 6
by
์ฐ์ฐ ๊น
ย
PPTX
Effective c++ ์ฑํฐ 2 ์ ๋ฆฌ
by
์ฐ์ฐ ๊น
ย
PPTX
Effective c++chapter3
by
์ฑ์ฐ ๊น
ย
PPTX
More effective c++ 3
by
ํ์ฐฌ ์
ย
PDF
5 6 1
by
nexthw
ย
PPTX
Effective c++chapter8
by
์ฑ์ฐ ๊น
ย
์ดํํฐ๋ธ C++ (7~9)
by
์ต์ฑ ์กฐ
ย
More effective c++ 2
by
ํ์ฐฌ ์
ย
์ดํํฐ๋ธ C++ ์คํฐ๋
by
quxn6
ย
์ดํํฐ๋ธ C++ 5,6 ์ฅ ์คํฐ๋
by
quxn6
ย
C++ Advanced ๊ฐ์ 4์ฃผ์ฐจ
by
HyunJoon Park
ย
2016 hack festival igrus
by
Jinookawk
ย
Effective c++(chapter 5,6)
by
๋ฌธ์ต ์ฅ
ย
Effective c++ 1,2
by
์ธ๋น ์
ย
Effective c++chapter1 and2
by
์ฑ์ฐ ๊น
ย
Effective c++ 1
by
ํ์ฐฌ ์
ย
Effective c++chapter4
by
์ฑ์ฐ ๊น
ย
effective c++ chapter 3~4 ์ ๋ฆฌ
by
Injae Lee
ย
Effective c++ 2
by
ํ์ฐฌ ์
ย
Effective c++ 4
by
ํ์ฐฌ ์
ย
Effective c++ ์ ๋ฆฌ chapter 6
by
์ฐ์ฐ ๊น
ย
Effective c++ ์ฑํฐ 2 ์ ๋ฆฌ
by
์ฐ์ฐ ๊น
ย
Effective c++chapter3
by
์ฑ์ฐ ๊น
ย
More effective c++ 3
by
ํ์ฐฌ ์
ย
5 6 1
by
nexthw
ย
Effective c++chapter8
by
์ฑ์ฐ ๊น
ย
Viewers also liked
PDF
C# / .NET Framework๋ก ๋ฏธ๋ ๋ฐฅ๊ทธ๋ฆ์ ์ฑ๊ฒจ๋ณด์ (Basic)
by
Dong Chan Shin
ย
PDF
Project anarchyแ แ ฉ 3d แแ ฆแแ ตแท แแ กแซแแ ณแฏแแ ต part_2_vforgeแแ ตแแ กแแ ต
by
Dong Chan Shin
ย
PDF
แแ ฉแฏแแ ตแธ แแ ตแซแแ ตแแ ฉแผแแ ขแจ แแ ณแ แ ขแแ ณแแ กแซแแ ณแแ ฅแธแแ ตแจ แแ ณแแ ฉแ แ ตแแ ฆแฏแ แ ตแผ
by
Dong Chan Shin
ย
PDF
Effective c++ chapter7_8_9_dcshin
by
Dong Chan Shin
ย
PDF
Effective c++ chapter5 6_ 131039 ์ ๋์ฐฌ
by
Dong Chan Shin
ย
PDF
User experience Design์ ํ์ฉ๋๋ แแ กแจแแ ฉแผ ์ฉ์ด แแ ฅแผแ แ ต
by
Dong Chan Shin
ย
PDF
More effective c++ chapter4 แแ ตแแ ฎ แแ กแผแแ ฉแจ 29แแ กแแ ต
by
Dong Chan Shin
ย
PDF
C++ try catch แแ ฅแแ ตแแ กแแ ต แแ กแแ ชแปแแ ต
by
Dong Chan Shin
ย
PDF
Project anarchyแ แ ฉ 3 d แแ ฆแแ ตแท แแ กแซแแ ณแฏแแ ต part_1
by
Dong Chan Shin
ย
PDF
Project anarchyแ แ ฉ 3d แแ ฆแแ ตแท แแ กแซแแ ณแฏแแ ต part_3_แแ ฎแทแแ ตแจแแ งแ แ ก แแ ฎแทแแ ตแจแแ ง
by
Dong Chan Shin
ย
PDF
Project anarchyแ แ ฉ 3d แแ ฆแแ ตแท แแ กแซแแ ณแฏแแ ต part_4_network_memory management
by
Dong Chan Shin
ย
PDF
Proactor/Reactor Server io แแ ฅแผแแ ณแผ แแ ฎแซแแ ฅแจ
by
Dong Chan Shin
ย
PDF
RTS แแ ฆแแ ตแท uiแแ ฆแแ ฅ แแ ชแจแแ ตแซ แแ กแฏ แแ ฎ แแ ตแปแแ ณแซ rts แแ ฆแแ ตแท usability
by
Dong Chan Shin
ย
PDF
Cloud Camp: The Introduction
by
cloudcampnigeria
ย
PDF
Bloovue
by
cloudcampnigeria
ย
C# / .NET Framework๋ก ๋ฏธ๋ ๋ฐฅ๊ทธ๋ฆ์ ์ฑ๊ฒจ๋ณด์ (Basic)
by
Dong Chan Shin
ย
Project anarchyแ แ ฉ 3d แแ ฆแแ ตแท แแ กแซแแ ณแฏแแ ต part_2_vforgeแแ ตแแ กแแ ต
by
Dong Chan Shin
ย
แแ ฉแฏแแ ตแธ แแ ตแซแแ ตแแ ฉแผแแ ขแจ แแ ณแ แ ขแแ ณแแ กแซแแ ณแแ ฅแธแแ ตแจ แแ ณแแ ฉแ แ ตแแ ฆแฏแ แ ตแผ
by
Dong Chan Shin
ย
Effective c++ chapter7_8_9_dcshin
by
Dong Chan Shin
ย
Effective c++ chapter5 6_ 131039 ์ ๋์ฐฌ
by
Dong Chan Shin
ย
User experience Design์ ํ์ฉ๋๋ แแ กแจแแ ฉแผ ์ฉ์ด แแ ฅแผแ แ ต
by
Dong Chan Shin
ย
More effective c++ chapter4 แแ ตแแ ฎ แแ กแผแแ ฉแจ 29แแ กแแ ต
by
Dong Chan Shin
ย
C++ try catch แแ ฅแแ ตแแ กแแ ต แแ กแแ ชแปแแ ต
by
Dong Chan Shin
ย
Project anarchyแ แ ฉ 3 d แแ ฆแแ ตแท แแ กแซแแ ณแฏแแ ต part_1
by
Dong Chan Shin
ย
Project anarchyแ แ ฉ 3d แแ ฆแแ ตแท แแ กแซแแ ณแฏแแ ต part_3_แแ ฎแทแแ ตแจแแ งแ แ ก แแ ฎแทแแ ตแจแแ ง
by
Dong Chan Shin
ย
Project anarchyแ แ ฉ 3d แแ ฆแแ ตแท แแ กแซแแ ณแฏแแ ต part_4_network_memory management
by
Dong Chan Shin
ย
Proactor/Reactor Server io แแ ฅแผแแ ณแผ แแ ฎแซแแ ฅแจ
by
Dong Chan Shin
ย
RTS แแ ฆแแ ตแท uiแแ ฆแแ ฅ แแ ชแจแแ ตแซ แแ กแฏ แแ ฎ แแ ตแปแแ ณแซ rts แแ ฆแแ ตแท usability
by
Dong Chan Shin
ย
Cloud Camp: The Introduction
by
cloudcampnigeria
ย
Bloovue
by
cloudcampnigeria
ย
Similar to Effective c++ chapter1 2_dcshin
PPTX
Effective c++ 1~8์ฅ
by
Shin heemin
ย
PPTX
Effective c++ ์ ๋ฆฌ chapter 4
by
์ฐ์ฐ ๊น
ย
PDF
C++ Advanced ๊ฐ์ 1์ฃผ์ฐจ
by
HyunJoon Park
ย
PDF
Api design for c++ 6์ฅ
by
Ji Hun Kim
ย
PDF
C++ api design ํ์ง
by
HyeonSeok Choi
ย
PPTX
Effective c++ Chapter1,2
by
๋ฌธ์ต ์ฅ
ย
PDF
Effective C++ Chapter 1 Summary
by
SeungYeonChoi10
ย
PPTX
๋ชจ์ด์ดํํฐ๋ธ C++ 3,4์ฅ ์์ธ, ํจ์จ ์คํฐ๋
by
quxn6
ย
PPTX
Mec++ chapter3,4
by
๋ฌธ์ต ์ฅ
ย
PDF
7 8 1
by
nexthw
ย
PPTX
Chapter5 ~ 6
by
Injae Lee
ย
PPTX
Ec++ 3,4 summary
by
Sehyeon Nam
ย
PPTX
More effective c++ chapter1,2
by
๋ฌธ์ต ์ฅ
ย
PPTX
Effective cpp
by
TonyCms
ย
PDF
1 2 1
by
nexthw
ย
PPTX
More effective c++ แแ ขแธแแ ฅ3~4ppt
by
Injae Lee
ย
PPTX
Effective c++ 3
by
ํ์ฐฌ ์
ย
PPTX
์ดํํฐ๋ธ C++ 789 ๊ณต๋ถ
by
quxn6
ย
PDF
EC 789
by
Gyeongwook Choi
ย
PDF
M3 4 1
by
nexthw
ย
Effective c++ 1~8์ฅ
by
Shin heemin
ย
Effective c++ ์ ๋ฆฌ chapter 4
by
์ฐ์ฐ ๊น
ย
C++ Advanced ๊ฐ์ 1์ฃผ์ฐจ
by
HyunJoon Park
ย
Api design for c++ 6์ฅ
by
Ji Hun Kim
ย
C++ api design ํ์ง
by
HyeonSeok Choi
ย
Effective c++ Chapter1,2
by
๋ฌธ์ต ์ฅ
ย
Effective C++ Chapter 1 Summary
by
SeungYeonChoi10
ย
๋ชจ์ด์ดํํฐ๋ธ C++ 3,4์ฅ ์์ธ, ํจ์จ ์คํฐ๋
by
quxn6
ย
Mec++ chapter3,4
by
๋ฌธ์ต ์ฅ
ย
7 8 1
by
nexthw
ย
Chapter5 ~ 6
by
Injae Lee
ย
Ec++ 3,4 summary
by
Sehyeon Nam
ย
More effective c++ chapter1,2
by
๋ฌธ์ต ์ฅ
ย
Effective cpp
by
TonyCms
ย
1 2 1
by
nexthw
ย
More effective c++ แแ ขแธแแ ฅ3~4ppt
by
Injae Lee
ย
Effective c++ 3
by
ํ์ฐฌ ์
ย
์ดํํฐ๋ธ C++ 789 ๊ณต๋ถ
by
quxn6
ย
EC 789
by
Gyeongwook Choi
ย
M3 4 1
by
nexthw
ย
Effective c++ chapter1 2_dcshin
1.
We are! Digging Effective
C++ Chapter 1 Chapter 2 NEXT 1๊ธฐ 131039 ์ ๋์ฐฌ
2.
We are! ํญ๋ชฉ 1.
United State of C++! C++๋ ๋ ์ด์ ๋จ์ C with Classes๊ฐ ์๋๋ฉฐ, ์ฌ๋ฌ ๊ฐ์ ํ์ ์ธ์ด๋ฅผ ํฌํจํ๋ ๊ฐ๋ ์ฐ๋ ์์ญ์ ๋ฐ๋ผ ํ๋ก๊ทธ๋๋ฐ๋ ๋ค๋ณํ C++ ๊ฐ์ฒด ์งํฅ ๊ฐ๋ ์ C++ ํ ํ๋ฆฟ C++ STL โข์ ์ฐจ์ ํ๋ก๊ทธ๋๋ฐ ์ง์ โข๊ฐ์ฒด์งํฅ ํ๋ก๊ทธ๋๋ฐ ์ง์ โข๋ฉํํ๋ก๊ทธ๋๋ฐ ์ง์ โข๊ฐ์ฒด ์งํฅ ๊ฐ๋ ์ถ๊ฐ โขํด๋์ค, ์บก์ํ, ์์์ผ๋ก ๊ตฌํ โข๋คํ์ฑ, ๊ฐ์ ํจ์๋ก ๊ตฌ์ฒดํ โขํ ํ๋ฆฟ ๋ฉํํ๋ก๊ทธ๋๋ฐ โข์ปดํ์ผ ๊ณผ์ ์์ ์ฝ๋๋ฅผ ์์ฑ โข์ฉ๋์ ๋ง์ถฐ ํ ํ๋ฆฟ ๊ตฌ๋ฌธ ์ฌ์ฉ โข์์ฃผ ์ฌ์ฉํ๋ ๋ผ์ด๋ธ๋ฌ๋ฆฌ โข์ปจํ ์ด๋, ๋ฐ๋ณต์, ์๊ณ ๋ฆฌ์ฆ ๋ฑ C โข๊ธฐ๋ณธ์ ๊ณต ๋ฐ์ดํฐํ์ โข์ ์ฒ๋ฆฌ๊ธฐ, ๋ฐฐ์ด, ํฌ์ธํฐ ๋ฑ โข๋๋ถ๋ถ์ ๊ธฐ๋ณธ ๋ฌธ๋ฒ์ ์์ฒ
3.
We are! ํญ๋ชฉ 2.
๋ญ๋น๋ฒฝ์ ๊ฐ์ง #define ์ ์ฒ๋ฆฌ์์ ์ฌ์ฉํ๋ #define์ ๋ฒ๋ฆฌ๊ณ ์์๋ฅผ ์ฌ์ฉํ์ ์ด์ 1) ์ฝ๋ ์ ์ฒด ์์ญ์์ ๋ณ๊ฒฝ์ด ๋ฐ์ํ๋ #define์ ๋ญ๋น ์ด์ 2) #define์๋ ์ ํจ ๋ฒ์๊ฐ ์๋ค ์ด์ 3) #define ๋งคํฌ๋ก๋ฅผ ์๋ชป ์จ ๊ทธ๋ง... ํด๊ฒฐ๋ถํฐ ๋ณด๊ณ ๊ฐ์ค๊ป์ ๋ฐฉ์1) ์์ ํ์ (const)์ ์นํด์ง ๊ฒ ๋ฐฉ์2) ํด๋์ค์์๋ ์ ์ ๋ฉค๋ฒ๋ก ๋ง๋ค ๊ฒ ๋ฐฉ์3) inline ํจ์๋ฅผ ์ธ ๊ฒ
4.
We are! ํญ๋ชฉ 2.
๋ญ๋น๋ฒฝ์ ๊ฐ์ง #define #define MAX_BUFF 1024 const int MAX_BUFF = 1024; โข ์ปดํ์ผ ์๋ฌ์ ํ์ธ์ด ์ด๋ ค์ ์ปดํ์ผ์์๋ ์ด๋ฏธ ์ซ์ ์์๋ก ๋์ฒด โข ์ฝ๋์ ํฌ๊ธฐ๊ฐ ๋์ด๋๋ ๊ฒฝ์ฐ ์กด์ฌ ํด๋น ๋จ์ด๋ฅผ ๊ธฐ๊ณ์ ์ผ๋ก ๋์น ํจ โข ์ ํจ๋ฒ์ ๊ฐ๋ ์ด ์์ โข ์บก์ํ ๋ถ๊ฐ โข ์ปดํ์ผ๋ฌ ํ์ธ ๋ฐ ๊ธฐํธ ํ ์ด๋ธ ์ ๋ ฅ โข ์์ ํ์ ์ ์ฌ๋ฌ ๋ฒ ์ฐ์ด๋๋ผ๋ ์ฌ๋ณธ์ ํ๋๋ง ์์ฑ โข ํด๋์ค ๋ด๋ถ์์ ์ ์ (static) ๋ฉค๋ฒ๋ก ๋ง๋ค์ด ํด๋์ค ์์ญ์์๋ง ์ฌ์ฉ โข ํด๋์ค์ ์์ ๋ฐ์ดํฐ ๋ฉค๋ฒ๋ ์บก์ํ ๋จ
5.
We are! ํญ๋ชฉ 2.
๋ญ๋น๋ฒฝ์ ๊ฐ์ง #define ํด๋์ค ๋ด๋ถ ์์ ์์ฑ ๋ฐ ํ์ฉ ๋ฐฉ๋ฒ //in header file class CostEstimate { private: Static const double FudgeFactor; โฆ } // in implement file const double CostEstimate::FudgeFactor = 1.35; ๋ฐฉ๋ฒ1) //in header file class CostEstimate { private: Static const double FudgeFactor = 1.35; โฆ } // in implement file const double CostEstimate::FudgeFactor; ๋ฐฉ๋ฒ2) ๋ฐฉ๋ฒ3) //in header file class CostEstimate { private: Enum { NumTurns = 5 }; Int scores[NumTurns]; โฆ } โข ์ ์ ์์ ์์ฑ ํ ๊ตฌํ ๋ถ์์ ์ ์ โข ๊ตฌ์ ์ปดํ์ผ๋ฌ์์์ ์ ์ธ๊ณผ ์ ์ โข ์ปดํ์ผ ๊ณผ์ ์์ ์์๊ฐ ๋จผ์ ํ์ํ ๊ฒฝ์ฐ โข Enum hack ๊ธฐ๋ฒ์ผ๋ก ์์ ํ๋ณด โข Enum hack ํน์ง โ ๋์ ๋ฐฉ์์ด ์ง๊ด์ (#define ์ ์ฌ) โ ์ธ๋ฐ ์๋ ๋ฉ๋ชจ๋ฆฌ ํ ๋น์ด ์์
6.
We are! ํญ๋ชฉ 2.
๋ญ๋น๋ฒฝ์ ๊ฐ์ง #define #define ๋งคํฌ๋ก์ ์ํ์ฑ์ ํผํ๋ผ ์ผ๋ฐ ์ฌ๋ก) #define CALL_WITH_MAX(a, b) f( (a) > (b) ? (a) : (b) ) Int a = 5, b = 0; CALL_WITH_MAX (++a, b); //1๋ฒ CALL_WITH_MAX (++a, b+10); //2๋ฒ โข 1๋ฒ๊ณผ 2๋ฒ์ ํ๋์ด ๋ค๋ฆ โข 1๋ฒ์ ++a๊ฐ 2ํ ์คํ ์ต์ด ๋น๊ต ๋จ๊ณ์์ 1ํ (a) ๋ฆฌํด ๋จ๊ณ์์ 1ํ โข 2๋ฒ์ ++a๊ฐ 1ํ ์คํ Inlineํจ์๋ก ์์ ์ฑ ํ๋ณด) template<typename T> Inline void callWithMax( const T& a, const T& b ) { f( a > b ? A : b ); } โข ์์์ T์ ๋ํด ํฌ๊ธฐ ๋น๊ต ํจ์ โข ๋์ ๋ฐฉ์๊ณผ ํ์ ์์ ์ฑ๊น์ง ํ๋ณด
7.
We are! ํญ๋ชฉ 3.
๋ผ๋ฉด์คํ ๊ฐ์ const Const๋ ๊ทธ ์ด๋ค ์ธ๋ถ ๋ณ๊ฒฝ๋ ๋ง์๋(๋ณ๊ฒฝ ๋ถ๊ฐ) ์ปดํ์ผ๋ฌ๊ฐ ์ ์ฝ์ ํ์ธํ๊ณ ์ง์ผ ์ ๋ ๋ณ๊ฒฝ๋์ง ์์ ์ฉ๋1) ์ปดํ์ผ๋ฌ๊ฐ ์ฌ์ฉ์์ ์๋ฌ๋ฅผ ๋์ ํ์ธ ์ฉ๋2) ์ด๋ ๊ณณ์์๋ ์ฌ์ฉ ํ ์ ์์ ์ฉ๋3) ํจ์ ๋ฐํ ๊ฐ์ ์ฌ์ฉํด ์์ ์ฑ,ํจ์จ์ ํ๋ณดํ๋ฉฐ ์๋ฌ ๊ฐ์ ex) ์๋ชป๋ ๋์ ์ฐ์ฐ ๋ฑ ์ฉ๋4) ํด๋์ค์ ์ธํฐํ์ด์ค๋ฅผ ์ดํดํ๊ธฐ ์ข๊ฒ ํจ ์ฉ๋5) ์คํ ์ฑ๋ฅ ํฅ์์ ๊ธฐ์ฌ(reference-to-const) ์ฃผ์ ์ฌํญ ์ฃผ์1) ๋นํธ์์ค ์์์ฑ์ ๋ชจ๋ ๊ฑธ ๋ณด์ฅํ์ง ์์ ์ฃผ์2) ์์ ๋ฉค๋ฒ, ๋น์์ ๋ฉค๋ฒ ํจ์๊ฐ ๊ธฐ๋ฅ์ ์ผ๋ก ๊ฐ์ ๊ฒฝ์ฐ ๋น์์ ๋ฒ์ ์ด ์์ ๋ฒ์ ์ ํธ์ถํ๋๋ก ํจ
8.
We are! ํญ๋ชฉ 3.
๋ผ๋ฉด์คํ ๊ฐ์ const ์ ๋ง ๋ค ๊ด์ฐฎ์ const, ๋ค๋ง ์๋ฏธ๊ฐ ์กฐ๊ธ ๋ฌ๋ผ์ง ๋ฟ Char *p = greeting; const char *p = greeting; char * const p = greeting; const char * const p = greeting; void f1 ( const Widget * pw ); void f2 (Widget const *pw); std::vector<int> vec; ... const std::vector<int>::iterator iter = vec.begin(); *iter = 10; ++iter; std::vector<int>::const_iterator cIter = vec.begin(); *cIter = 10; ++cIter โข ๋น์์ ํฌ์ธํฐ, ๋น์์ ๋ฐ์ดํฐ โข ๋น์์ ํฌ์ธํฐ, ์์ ๋ฐ์ดํฐ(๋ฐ์ดํฐ ๋ณ๊ฒฝ์ ์ค๋ฅ) โข ์์ ํฌ์ธํฐ, ๋น์์ ๋ฐ์ดํฐ(ํฌ์ธํฐ ์ฃผ์ ๋ณ๊ฒฝ์ ์ค๋ฅ) โข ์์ ํฌ์ธํฐ, ์์ ๋ฐ์ดํฐ(์ ๋ถ ๋ณ๊ฒฝ ๊ธ์ง) โข ์๋ฏธ ์ฐจ์ด ์์ โข Widget ๊ฐ์ฒด๊ฐ const โข Iter๊ฐ ์์ โข ๋ฐ์ดํฐ๋ ๋ณ๊ฒฝ ๊ฐ๋ฅํ๋ ++iter์์ ์ค๋ฅ โข ๋ฐ์ดํฐ๊ฐ ์์ โข ๋ฐ์ดํฐ๋ ๋ณ๊ฒฝ์ ์ค๋ฅ, ++iter ๊ฐ๋ฅ
9.
We are! ํญ๋ชฉ 3.
๋ผ๋ฉด์คํ ๊ฐ์ const ๋นํธ ์์ค ์์์ฑ์ ํ์ฉ๋๋ ๋ฌธ์ ๊ฐ ์๋ ๊ฒฝ์ฐ Class CTextBlock { Public: โฆ char& operator[]( std::size_t position ) const { return pText[position]; } Private: Char *pText; }; //main ์คํ Const CTextBlock cctb( โHelloโ ); Char *pc = &cctb[0]; *pc = โJโ โข ์์ ๊ฐ์ฒด ์ ์ธ โข ์์ ๋ฒ์ operator[] ํธ์ถ๋ก cctb์ ํฌ์ธํฐ ํ๋ ์์ ๋ฒ์ ์ด๋ผ ์์ ํ ๊ฒ์ผ๋ก ์์ โข ๊ทธ๋ฌ๋ ์ง์ ์ ๊ทผ์ผ๋ก โHelloโ๊ฐ โJelloโ๋ก ๋ณ๊ฒฝ -> ์ค๋ฅ! -> mutable์ ์ฌ์ฉํด ์ฒ๋ฆฌ -> ๋น๋ก ์์ ๋ฉค๋ฒ ํจ์์์๋ ์์ ๊ฐ๋ฅ
10.
We are! ํญ๋ชฉ 3.
๋ผ๋ฉด์คํ ๊ฐ์ const ์ฝ๋๊ฐ ์ค๋ณต๋๋ฉด ๋น์์ ๋ฒ์ ์ด ์์ ๋ฒ์ ์ ๋ถ๋ฌ ์ค๋๋ก ํจ Const char& operator[](std::size_t position) const { //pseudo์ฝ๋ ๊ฒฝ๊ณ ๊ฒ์ฌ(); ์ ๊ทผ ๋ฐ์ดํฐ ๋ก๊น (); ์๋ฃ ๋ฌด๊ฒฐ์ฑ ๊ฒ์ฆ(); } char& operator[](std::size_t position) { //pseudo์ฝ๋ ๊ฒฝ๊ณ ๊ฒ์ฌ(); ์ ๊ทผ ๋ฐ์ดํฐ ๋ก๊น (); ์๋ฃ ๋ฌด๊ฒฐ์ฑ ๊ฒ์ฆ(); } Const char& operator[](std::size_t position) const { //pseudo์ฝ๋ ๊ฒฝ๊ณ ๊ฒ์ฌ(); ์ ๊ทผ ๋ฐ์ดํฐ ๋ก๊น (); ์๋ฃ ๋ฌด๊ฒฐ์ฑ ๊ฒ์ฆ(); } char& operator[](std::size_t position) { return const_cast<char&> ( static_cast<const TextBlock&>(*this)[position] ); } โข ์ค๋ณต์ ์ ๊ฑฐ โข ์ ๋ ฅ ์๋ฃํ๊ณผ ์ถ๋ ฅ ์๋ฃํ์ ๊ฐ์ ํ๋ณํ์ผ๋ก ์ผ์น
11.
We are! ํญ๋ชฉ 4.
์์ ํ์ ์ด๊ธฐํ๋ฅผ ํ๊ณ ์ฐ์ ์ด๊ธฐํ ๋์ง ์์ ๊ฐ์ ์ฝ๋๋ก ๋ด๋ฒ๋ ค ๋๋ฉด ์ฐ๋ ๊ธฐ ๊ฐ์ ์ฝ๊ณ ์ ์๋์ง ์์ ๋์(์ค๋ฅ) ๋ฐ์ ๋ชจ๋ ๊ฐ์ฒด๋ฅผ ์ฌ์ฉํ๊ธฐ ์ ์ ํญ์ ์ด๊ธฐํ!
12.
We are! ํญ๋ชฉ 4.
์์ ํ์ ์ด๊ธฐํ๋ฅผ ํ๊ณ ์ฐ์ ๋์ ์ ์ด๊ธฐํ๊ฐ ์๋๋ค ABEntry::ABEntry(const std::string& name, const std::string& address, const std::list<PhoneNumber>& phones) { theName = name; theAddress = address; thePhones = phones; numTimesconsulted = 0; } โข ๊ฐ์ฒด์ ๋ค์ด์จ ์ ๋ฌ์ธ์๋ฅผ ๋์ ํ๊ณ ์์ โข ์ด๋ฏธ ๋์ ์ ์ ์ด๊ธฐํ๊ฐ ๋์ด ์์์ด์ผ ํจ ABEntry::ABEntry(const std::string& name, const std::string& address, const std::list<PhoneNumber>& phones) theName( name ), theAddress( address ), thePhones( phones ), numTimesconsulted( 0 ) { } โข ๋ฉค๋ฒ ์ด๊ธฐํ ๋ฆฌ์คํธ๋ฅผ ํ์ฉํด ์ด๊ธฐํ โข ๊ทธ์ ์์ ๋ฉ๋ชจ๋ฆฌ์ด๊ธฐํ ํ ํจ์์์ ๋ฃ์ ์ ์์
13.
We are! ํญ๋ชฉ 4.
์์ ํ์ ์ด๊ธฐํ๋ฅผ ํ๊ณ ์ฐ์ ๋น์ง์ญ ์ ์ ๊ฐ์ฒด(์๋ก ๋ค๋ฅธ Class์ ์ฐธ์กฐ)๋ค์ ์ด๊ธฐํ ์์์ ๋ฐ๋ผ ๋ฐ์ํ๋ ๋ฌธ์ โ์ด๊ธฐํ ๋๊ธฐ๋ ์ ์ ๋ค๋ฅธ ๊ฐ์ฒด๊ฐ ์ด๊ธฐํ ์ ๋ณ์ ์์ฒญโ = ์ค๋ฅ Singleton Pattern์ผ๋ก ํด๊ฒฐ! โข ๋น์ง์ญ ์ ์ ๊ฐ์ฒด๋ฅผ ๋งก๋ ํจ์ ์ ์ ํ ๊ฐ ๊ฐ์ฒด ๋ฃ๊ธฐ โข ํจ์์์ ์ ์ ๊ฐ์ฒด ์ ์ธ ํ ์ฐธ์กฐ์ ๋ฐํ โข ์ง์ ์ ๊ทผ์์ ํจ์ ํธ์ถ๋ก ๋์ฒด FileSystem& tfs(); Directory& tempDir(); ๋ฑ Class FileSystem { โฆ }; FileSystem& tfs() { Static FileSystem fs; Return fs; } Class Directory { โฆ }; Dirctory::Directory( params ) { โฆ Std::size_t disks = tfs().numDisks(); } Directory& tempDir() { Static Dirctory td; Return td; }
14.
We are! ํญ๋ชฉ 5.
์ปดํ์ผ๋ฌ๊ฐ ์์์ ๋ง๋๋ ์จ๊ฒจ์ง ํจ์ ๋น์ด ์๋ ํด๋์ค๋ฅผ ๋ง๋ค๋๋ผ๋ ์ด๋ฏธ ์จ๊ฒจ์ ธ ์๋ ํจ์๊ฐ ์กด์ฌํ๋ค class Empty { public: Empty() { ... } Empty(const Empty& rhs) { ... } ~Empty() { ... } Empty& operator=( const Empty& rhs) { ... } }; โข ๊ธฐ๋ณธ ์์ฑ์ โข ๋ณต์ฌ ์์ฑ์ โข ์๋ฉธ์ โข ๋ณต์ฌ ๋์ ์ฐ์ฐ์ ์ปดํ์ผ๋ฌ๊ฐ ์์์ ๋ง๋ค์ง๋ง... ์ฌ์ฉ์๊ฐ ์ฐ์ ์ ์ธํ๋ฉด ๋ง๋ค์ง ์์ ๋์์ ์ต์ข ์ฝ๋๊ฐ ์ ๋ฒํ๊ณ ์ด์น์ ๋ฟ์์ผ ์๋ ์์ฑ
15.
We are! ํญ๋ชฉ 6.
์์์ ๋ง๋๋ ํจ์๋ฅผ ๊ธ์ง ์ํค์ ๋ณต์ฌ ๋ฐฉ์ง ๋ฑ์ ๋ชฉ์ ์ ์ํด ์ปดํ์ผ๋ฌ๊ฐ ๋ง๋๋ ํจ์๋ฅผ ๊ธ์งํ๋ ค๋ฉด? ์ปดํ์ผ๋ฌ์๊ฒ ์ด๋ฏธ ๊ทธ ํจ์๊ฐ ์์์ ์๋ ค์ค Class HomeForSale { Public: โฆ Private: ... HomeForSale ( const homeForSale& ); HomeForSale& operator= ( const HomeForSale& ); } ๋ฐฉ๋ฒ1) ์๋์ผ๋ก ์์ฑํ๋ ํจ์์ ๋ํด ์ ์ธ(๊ธฐ๋ฅ์ ๊ตฌํ ์ ํจ) ๋ฐฉ๋ฒ2) ๋ณต์ฌ ๋ฐฉ์ง ๋ถ๋ชจ ํด๋์ค ์ฌ์ฉ Class Uncopyable { Protected: Uncopyable() {} ~Uncopyable() {} Private: Uncopyable( const Uncopyable& ); Uncopyable& operator=( const Uncopyable& ); }; Class HomeForSale : private Uncopyable{ Public: โฆ }
16.
We are! ํญ๋ชฉ 7.
๋คํ์ฑ์ ๋ถ๋ชจ ํด๋์ค์ ๊ฐ์ ์๋ฉธ์๊ฐ ํ์ํด ๋์ ๋ฐ์ธ๋ฉ์ ๊ฐ์ ์๋ฉธ์๊ฐ ์์ผ๋ฉด ์์ ํด๋์ค์์ ๋ฉ๋ชจ๋ฆฌ leak์ด ๋ฐ์ ๊ธฐ๋ณธ ํด๋์ค ํฌ์ธํฐ๋ฅผ ํตํด ์์ ํด๋์ค ๊ฐ์ฒด๊ฐ ์ญ์ ๋ ๋, ๊ฐ์ ์๋ฉธ์๊ฐ ์์ผ๋ฉด ๋ถ๋ชจ ํด๋์ค๋ง ์ญ์ โข ์์ฑ์ ์์ 1. ๋ถ๋ชจ ํด๋์ค 2. ์์ ํด๋์ค โข ๊ฐ์ ์๋ฉธ์๊ฐ ์๋ ๊ฒฝ์ฐ ์ญ์ ์ 1. ๋ถ๋ชจ ํด๋์ค 2. ์ฐ๊ฒฐ๊ณ ๋ฆฌ ์์ค โข ๊ฐ์ ์๋ฉธ์ ์๋ ๊ฒฝ์ฐ ์ญ์ 1. ์์ ํด๋์ค 2. ๋ถ๋ชจ ํด๋์ค Class TimeKeeper { Public: TimeKeeper(); Virtual ~TimeKeeper(); }; TimeKeeper *ptk = getTimeKeeper(); โฆ Delete ptk;
17.
We are! ํญ๋ชฉ 7.
๋คํ์ฑ์ ๋ถ๋ชจ ํด๋์ค์ ๊ฐ์ ์๋ฉธ์๊ฐ ํ์ํด ๊ฐ์ ์๋ฉธ์๊ฐ ์๋ ๊ฒฝ์ฐ ๋ถ๋ชจ ํด๋์ค๊ฐ ๋๋ฉด ์ .๋. ์ ๋จ ex) std::string ํ์ ์ ๊ฐ์ ์๋ฉธ์๊ฐ ์์ STL ์ปจํ ์ด๋ ํ์ ์ ๊ฐ์ ์๋ฉธ์๊ฐ ์์ vector, list, set tr1::unordered_map ๋ฑ
18.
We are! ํญ๋ชฉ 8.
์๋ฉธ์์์ ์์ธ๊ฐ ํฐ์ง๋ค๋ฉด ๋ง์๋ผ! ์์ธ ์ข์ํ๋ ์ฌ๋์ ๋น์ฐํ ์๊ฒ ์ง๋ง, C++๋ ์์ธ๋ฅผ ๋ด๋ ์๋ฉธ์๋ฅผ ๋๊ณ ๋ณด์ง ์์ ์์ธ ์ฒ๋ฆฌ ํด๊ฒฐ ๋ฐฉ๋ฒ ๋ฐฉ๋ฒ1) ํ๋ก๊ทธ๋จ์ ๋ฐ๋ก ๋๋ธ๋ค ๋ฐฉ๋ฒ2) ์์ธ๋ฅผ ์ผ์ผ ๋ฒ๋ฆฐ๋ค ๊ฐ์ฅ ์ข์ ๋ฐฉ๋ฒ! -์ฌ์ฉ์์๊ฒ ๋งก๊ธฐ๊ณ ์คํจํ๋ฉด ์ผํจ๋ค
19.
We are! ํญ๋ชฉ 8.
์๋ฉธ์์์ ์์ธ๊ฐ ํฐ์ง๋ค๋ฉด ๋ง์๋ผ! ์ฌ์ฉ์์ ๋๊ธฐ๋ ๊ฒ์ด ์ค์ํด ๋ณด์ด์ง๋ง, ์๋ฉธ์์ ์์ธ๋ฅผ ๋์ง ์๋ ๊ฒ์ด ํฌ์ธํธ! Class DBConn { Public: โฆ Void close() { db.close(); closed = true; } ~DBConn() { If( !closed ) Try { db.close(); } Catch ( โฆ ) { closeLogging(); } } Private: DBConnection db; Bool closed; }; โข ์ฌ์ฉ์๊ฐ ์ฐ์ close() ํจ์ ์คํ์ผ๋ก ์ฒ๋ฆฌ โข ์ฌ์ฉ์๊ฐ ์ฐ๊ฒฐ์ ์ ๋ซ์์ผ๋ฉด ์๋ฉธ์์์ ์ฌํ์ธ ํ ์ญ์ โข ์๋ฉธ์์์ ์ง์ ์์ธ ์ฒ๋ฆฌ๊ฐ ์์ผ๋ฉด ์๋จ โข ์ฌ์ฉ์๊ฐ ํจ์๋ก ํธ์ถํ๋ฉด ๊ด๋ฆฌ ๊ฐ๋ฅ
20.
We are! ํญ๋ชฉ 9.
์์ฑ๊ณผ ์๋ฉธ ๊ณผ์ ์์ ๊ฐ์ํจ์ ํธ์ถ ๊ธ์ง ์์ ์์ฑ ์์๊ฐ ๊ธฐ์ต ๋๋ค๋ฉด... ์์ฑ์, ์๋ฉธ์์ ๊ฐ์ ํจ์๊ฐ ์๋ค๋ฉด ๋ถ๋ชจ, ์์ ํด๋์ค ์์ฑ/์๋ฉธ์ด ๋น์ ์ ์๋ ๋ถ๋ชจ ํด๋์ค ์์ฑ์๋ ์์ ํด๋์ค ์์ฑ์๋ณด๋ค ์์์ ์คํ ๋ถ๋ชจ์ ๊ฐ์ ํจ์๋ ์์ ํด๋์ค ๋ฐ์ดํฐ๊ฐ ์ด๊ธฐํ ๋๊ธฐ ์ ์ ์์ฒญ ์ฐ๋ ๊ธฐ ๊ฐ์ ํ์ฉํ ํจ์ ์คํ ๊ฐ๋ฅ์ฑ ๋ฌธ์ ๋ ํธ์ถ ์์! ํธ์ถ ์์์ ๋ฐ๋ผ ์ ํ ๋ค๋ฅธ ๊ฐ์ฒด๋ฅผ ์ฌ์ฉํ๊ฒ ๋จ
21.
We are! ํญ๋ชฉ 10.
๋์ ์ฐ์ฐ์๋ *this๋ฅผ ๋ฐํํ๋ค ๋์ ์ฐ์ฐ์๋ ์ข๋ณ ์ธ์๋ฅผ *this๋ก ๋ฐํ ํ๋๋ก ํจ ex) X = y = z = 15; ๋์น X = (y = (z = 15)); ์ผ์ข ์ ์ปจ๋ฒค์ (๊ด๋ก)! โ์ข๋ณ ๊ฐ์ฒด์ ์ฐธ์กฐ์๋ฅผ ๋ฐํํ๊ฒ ๋ง๋ค์โ
22.
We are! ํญ๋ชฉ 11.
operator=์์ ์๊ธฐ ๋์ ์ ๊ผญ ์ฒ๋ฆฌํ๋ผ ์ด์ํ ์ฝ๋? ์ ์ ์ฝ๋! Class Widget { โฆ }; Widget w; โฆ w = w; ์๊ธฐ ๋์ ์ ๊ฐ๋ฅ์ฑ์ ๊ฐ์ง ๊ฒฝ์ฐ๊ฐ ๋ง์ Widget& Widget::operator=(const Widget& rhs) { Bitmap *pOrig = pb; pb = new Bitmap(*rhs.pb); Delete pOrig; Return *this; } ์์ ์ฝ๋1) Widget& Widget::operator=(const Widget& rhs) { Widget temp(rhs); Swap(temp); Return *this; } ์์ ์ฝ๋2)
23.
We are! ํญ๋ชฉ 12.
๊ฐ์ฒด ๋ณต์ฌ๋ ํธ์ ์ ์น ๋ค์ ธ์ ์์ ํ ๋ณต์ฌ ๊ฐ์ฒด๋ฅผ ๋ณต์ฌํ๋ ๊ฒ์ ์ ๋ ๋จ์ํ์ง ์๋ค 1) ํด๋น ํด๋์ค์ ๋ฐ์ดํฐ ๋ฉค๋ฒ๋ฅผ ๋ชจ๋ ๋ณต์ฌํ๊ณ 2) ํด๋์ค๊ฐ ์์ํ ๋ถ๋ชจ ํด๋์ค์ ๋ณต์ฌ ํจ์๋ ํธ์ถํด์ผ ํจ PriorityCustomer::PriorityCustomer( const PriorityCustomer& rhs) : Customer(rhs), priority(rhs.priority) { logCall(โPriorityCustomer copy constructorโ); } PriorityCustomer& PriorityCustomer::operator=( const PriorityCustomer& rhs ) { logCall(โPriorityCustomer copy assignment operatorโ); Customer::operator = (rhs); Priority = rhs.priority; Return *this; } โข ์ฝ๋ ์ค๋ณต๋ณด๋ค ์ ํํ ๋ณต์ฌ๊ฐ ๋ ์ค์ํ๋ค โข ๋ถ๋ชจํด๋์ค์ ๋ฐ์ดํฐ๊ฐ ์ด๊ธฐํ ๋๋๋ก ํจ โข ๋์ ์ฐ์ฐ์๋ฅผ ํตํด ๊ธฐ๋ณธ ํด๋์ค ๋ถ๋ถ์ ๋์ ํจ
24.
We are! Thank you
:) 2014. 03. 27
Download