SlideShare uma empresa Scribd logo
1 de 58
Baixar para ler offline
2014-15 INTERMEDIATE
C++ STUDY #7
์˜ฅ์ฐฌํ˜ธ
๋™์  ๋ฉ”๋ชจ๋ฆฌ ํ• ๋‹น์„ ํ†ตํ•œ ๊ฐ์ฒด ์ƒ์„ฑ
SPREADSHEET ํด๋ž˜์Šค, ์†Œ๋ฉธ์ž๋ฅผ ์ด์šฉํ•œ ๋ฉ”๋ชจ๋ฆฌ ํ•ด์ œ, ๋ณต์ œ์˜ ๋Œ€์ž…๊ณผ ๊ด€๋ฆฌ
SPREADSHEET ํด๋ž˜์Šค
SpreadsheetCell
Spreadsheet SpreadsheetApplication
์ง€๋‚œ ์‹œ๊ฐ„์— SpreadsheetCell ํด๋ž˜์Šค๋ฅผ ์ž‘์„ฑํ–ˆ์—ˆ๋‹ค.
์ด๋ฒˆ ์‹œ๊ฐ„์—๋Š” Spreadsheet ํด๋ž˜์Šค๋ฅผ ์ ์ง„์ ์œผ๋กœ ๋งŒ๋“ค์–ด ๋ณธ๋‹ค.
SPREADSHEET ํด๋ž˜์Šค
SpreadsheetCell**์€ ์„œ๋กœ ๋‹ค๋ฅธ ํฌ๊ธฐ์˜ ์…€ ๊ฒฉ์ž๋ฅผ ๊ฐ€์งˆ ์ˆ˜ ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ํฌ์ธํ„ฐ ํƒ€์ž…์„ ํ†ตํ•ด
์ƒ์„ฑ์ž์—์„œ ์…€ ๊ฒฉ์ž์˜ ๋†’์ด์™€ ๋„ˆ๋น„์— ๋งž์ถ”์–ด ๋™์ ์œผ๋กœ ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ํ• ๋‹นํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ•œ๋‹ค.
SPREADSHEET ํด๋ž˜์Šค
2์ฐจ์› ๋ฐฐ์—ด์˜ ๋™์  ํ• ๋‹น ์ฝ”๋“œ, ๊ทธ๋ฆฌ๊ณ  ๋†’์ด 3 / ๋„ˆ๋น„ 4 ํฌ๊ธฐ์˜ ์…€์„ ๊ฐ–๋Š” Spreadsheet ๊ฐ์ฒด ์ƒ์„ฑ.
4
int mWidth
3
int mHeight
์Šคํƒ(Stack) ๋ฉ”๋ชจ๋ฆฌ
SpreadsheetCell** mCells
ํž™(Heap) ๋ฉ”๋ชจ๋ฆฌ
๊ฐ ํ•ญ๋ชฉ์€ ๋ฌด๋ช…์˜
SpreadsheetCell ํฌ์ธํ„ฐ๋‹ค
๊ฐ ํ•ญ๋ชฉ์€ ๋ฌด๋ช…์˜
SpreadsheetCell ํฌ์ธํ„ฐ๋‹ค
Spreadsheet s1
SPREADSHEET ํด๋ž˜์Šค
x, y ์ขŒํ‘œ๊ฐ€ ์œ ํšจํ•œ ์…€ ์ขŒํ‘œ๋ฅผ ๊ฐ€๋ฆฌํ‚ค๋Š”์ง€ ๊ฒ€์‚ฌํ•˜๊ธฐ ์œ„ํ•ด inRange()๋ผ๋Š” ๋ฉ”์„œ๋“œ๋ฅผ ์ด์šฉ.
์†Œ๋ฉธ์ž๋ฅผ ์ด์šฉํ•œ ๋ฉ”๋ชจ๋ฆฌ ํ•ด์ œ
๋™์ ์œผ๋กœ ํ• ๋‹นํ•œ ๋ฉ”๋ชจ๋ฆฌ๋Š” ์‚ฌ์šฉ์ด ๋๋‚œ ํ›„ ๋ฐ˜๋“œ์‹œ ํ•ด์ œ๋ฅผ ํ•ด์ฃผ์–ด์•ผ ํ•œ๋‹ค.
๋™์ ์œผ๋กœ ํ• ๋‹นํ•œ ๋ฉ”๋ชจ๋ฆฌ์˜ ํ•ด์ œ๋Š” ๊ฐ์ฒด ์†Œ๋ฉธ์ž ์•ˆ์— ์ˆ˜ํ–‰๋˜๋Š” ๊ฒƒ์ด ๊ฐ€์žฅ ๋ฐ”๋žŒ์งํ•˜๋‹ค.
์†Œ๋ฉธ์ž๋Š” ํด๋ž˜์Šค์˜ ์ด๋ฆ„๊ณผ ๊ฐ™์€ ์ด๋ฆ„์„ ๊ฐ€์ง€๋˜ ~ ๊ธฐํ˜ธ๋ฅผ ์•ž์— ๋ถ™์ธ๋‹ค.
๋ณต์ œ์™€ ๋Œ€์ž…์˜ ๊ด€๋ฆฌ
๋ณต์ œ ์ƒ์„ฑ์ž์™€ ๋Œ€์ž… ์—ฐ์‚ฐ์ž๋ฅผ ์ง์ ‘ ๋งŒ๋“ค์ง€ ์•Š์œผ๋ฉด ์ปดํŒŒ์ผ๋Ÿฌ๊ฐ€ ์ž๋™์œผ๋กœ ์ƒ์„ฑํ•ด ์ค€๋‹ค.
์ปดํŒŒ์ผ๋Ÿฌ๊ฐ€ ์ž๋™์œผ๋กœ ์ƒ์„ฑํ•œ ๋ฉ”์„œ๋“œ๋Š” ๋ฐ์ดํ„ฐ ๋ฉค๋ฒ„๋“ค์— ๋Œ€ํ•ด ์žฌ๊ท€์ ์œผ๋กœ ๋ณต์ œ ์ƒ์„ฑ์ž ๋˜๋Š” ๋Œ€์ž… ์—ฐ์‚ฐ์ž๋ฅผ ํ˜ธ์ถœํ•œ๋‹ค.
๋‹จ, ๊ธฐ๋ณธ ๋ฐ์ดํ„ฐ ํƒ€์ž…์— ๋Œ€ํ•ด์„œ๋Š” ๋ณต์ œ ์ƒ์„ฑ์ž๋‚˜ ๋Œ€์ž… ์—ฐ์‚ฐ์ž ๋Œ€์‹  ์–•์€ ๋ณต์ œ(Shallow Copy)๊ฐ€ ์ผ์–ด๋‚œ๋‹ค.
ํฌ์ธํ„ฐ๊ฐ€ ๊ฐ€๋ฆฌํ‚ค๋Š” ๋ฐ์ดํ„ฐ๋Š” ๋นผ๋†“๊ณ  ํ”ผ์ƒ์ ์œผ๋กœ ๋ฐ์ดํ„ฐ ๋ฉค๋ฒ„์˜ ๋น„ํŠธ ๊ฐ’์„ ์›๋ณธ์—์„œ ๋Œ€์ƒ์œผ๋กœ ๋ณต์ œํ•˜๊ธฐ๋งŒ ํ•œ๋‹ค.
์Šคํƒ(Stack) ๋ฉ”๋ชจ๋ฆฌ ํž™(Heap) ๋ฉ”๋ชจ๋ฆฌ
๊ฐ ํ•ญ๋ชฉ์€ ๋ฌด๋ช…์˜
SpreadsheetCell ํฌ์ธํ„ฐ๋‹ค
๊ฐ ํ•ญ๋ชฉ์€ ๋ฌด๋ช…์˜
SpreadsheetCell ํฌ์ธํ„ฐ๋‹ค
4
int mWidth
3
int mHeight
SpreadsheetCell** mCells
Spreadsheet s1
4
int mWidth
3
int mHeight
SpreadsheetCell** mCells
Spreadsheet s
๋ณต์ œ์™€ ๋Œ€์ž…์˜ ๊ด€๋ฆฌ
๋งŒ์•ฝ ์ตœ์•…์˜ ์ƒํ™ฉ์œผ๋กœ ํ•จ์ˆ˜ printSpreadsheet()๊ฐ€ Spreadsheet ๊ฐ์ฒด๋ฅผ ๋ฆฌํ„ดํ•˜๋ฉด
์Šคํƒ ๊ฐ์ฒด์ธ s์˜ ์†Œ๋ฉธ์ž๊ฐ€ ํ˜ธ์ถœ๋˜๋ฉด์„œ mCells ํฌ์ธํ„ฐ๊ฐ€ ๊ฐ€๋ฆฌํ‚ค๋Š” ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ํ•ด์ œํ•ด ๋ฒ„๋ฆฐ๋‹ค.
์ด์ œ s1์ด ๊ฐ€๋ฆฌํ‚ค๋Š” ํฌ์ธํ„ฐ๋Š” ๋”๋Š” ์œ ํšจํ•˜์ง€ ์•Š๋‹ค. ์ด๋Ÿฌํ•œ ํฌ์ธํ„ฐ๋ฅผ ๋Œ•๊ธ€๋ง ํฌ์ธํ„ฐ(Dangling Pointer)๋ผ๊ณ  ํ•œ๋‹ค.
์Šคํƒ(Stack) ๋ฉ”๋ชจ๋ฆฌ ํž™(Heap) ๋ฉ”๋ชจ๋ฆฌ
๋ฐ˜ํ™˜ ํ•ด์ œ๋œ ๋ฉ”๋ชจ๋ฆฌ
4
int mWidth
3
int mHeight
SpreadsheetCell** mCells
Spreadsheet s1
๋ณต์ œ์™€ ๋Œ€์ž…์˜ ๊ด€๋ฆฌ
s1๊ณผ s2 ๋‘ ๊ฐ์ฒด๊ฐ€ ์ƒ์„ฑ๋œ ์งํ›„ ๋ฉ”๋ชจ๋ฆฌ ์ƒํƒœ.
์Šคํƒ(Stack) ๋ฉ”๋ชจ๋ฆฌ ํž™(Heap) ๋ฉ”๋ชจ๋ฆฌ
4
int mWidth
3
int mHeight
SpreadsheetCell** mCells
Spreadsheet s2
2
int mWidth
2
int mHeight
SpreadsheetCell** mCells
Spreadsheet s1
๋ณต์ œ์™€ ๋Œ€์ž…์˜ ๊ด€๋ฆฌ
๋Œ€์ž…์ด ์‹คํ–‰๋˜๊ณ  ๋‚œ ํ›„์˜ ๋ฉ”๋ชจ๋ฆฌ ์ƒํƒœ.
์Šคํƒ(Stack) ๋ฉ”๋ชจ๋ฆฌ ํž™(Heap) ๋ฉ”๋ชจ๋ฆฌ
4
int mWidth
3
int mHeight
SpreadsheetCell** mCells
Spreadsheet s2
2
int mWidth
2
int mHeight
SpreadsheetCell** mCells
Spreadsheet s1
์ฃผ์ธ์ด ์—†์–ด์ง„ ๋ฉ”๋ชจ๋ฆฌ!
(Orphaned Memory)
s1, s2์˜ mCells ํฌ์ธํ„ฐ๊ฐ€
๊ฐ™์€ ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ๊ฐ€๋ฆฌํ‚ค๋Š” ๊ฒƒ์€ ๋ฌผ๋ก 
s1์˜ mCells ํฌ์ธํ„ฐ๊ฐ€ ๊ฐ€๋ฆฌํ‚ค๊ณ  ์žˆ๋˜
๋ฉ”๋ชจ๋ฆฌ ์˜์—ญ์ด ์ฃผ์ธ์„ ์žƒ์–ด๋ฒ„๋ฆฐ๋‹ค.
์ด๋Ÿฌํ•œ ๋ฌธ์ œ๋ฅผ ํ”ผํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š”
์ขŒ๋ณ€ํ•ญ์˜ ๊ฐ์ฒด๊ฐ€ ์ฐธ์กฐํ•˜๊ณ  ์žˆ๋Š” ๋ฉ”๋ชจ๋ฆฌ๋ฅผ
๋ฐ˜ํ™˜ํ•œ ํ›„์— ์ƒˆ๋กœ ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ์ค€๋น„ํ•ด
๊นŠ์€ ๋ณต์ œ(Deep Copy)๋ฅผ ํ•ด์•ผ ํ•œ๋‹ค.
๋ณต์ œ์™€ ๋Œ€์ž…์˜ ๊ด€๋ฆฌ
Spreadsheet ํด๋ž˜์Šค์˜ ๋ณต์ œ ์ƒ์„ฑ์ž ์ •์˜ ๋ฐ ๊ตฌํ˜„.
ํฌ์ธํ„ฐ ๋ฐ์ดํ„ฐ ๋ฉค๋ฒ„ ๋ณ€์ˆ˜ mCells์— ๋Œ€ํ•ด์„œ๋Š” ๊นŠ์€ ๋ณต์ œ๋ฅผ ํ•˜๊ธฐ ์œ„ํ•ด
2์ฐจ์› ๋ฐฐ์—ด์˜ ํฌ์ธํ„ฐ๋ฅผ ์ˆœํšŒํ•˜๋ฉฐ ๊ฐ ๋ฐฐ์—ด ํ•ญ๋ชฉ์„ ํ•˜๋‚˜์”ฉ ๋ชจ๋‘ ๋ณต์ œํ•œ๋‹ค.
๊ฐ์ฒด ์ƒ์„ฑ์„ ์œ„ํ•œ ๋ณต์‚ฌ ์ƒ์„ฑ์ž์ด๊ธฐ ๋•Œ๋ฌธ์— ์•„์ง ๊ฐ์ฒด ์ž์ฒด๊ฐ€ ์กด์žฌํ•˜์ง€ ์•Š๋Š”๋‹ค. โ†’ ๋ณต์ œํ•˜๊ธฐ ์ „์— mCells์— ๋Œ€ํ•œ ๋ฉ”๋ชจ๋ฆฌ ํ•ด์ œ๋ฅผ ํ•  ํ•„์š”๊ฐ€ ์—†๋‹ค.
๋ณต์ œ์™€ ๋Œ€์ž…์˜ ๊ด€๋ฆฌ
Spreadsheet ํด๋ž˜์Šค์˜ ๋Œ€์ž… ์—ฐ์‚ฐ์ž ์ •์˜.
์–ด๋–ค ๊ฐ์ฒด๊ฐ€ ๋Œ€์ž… ๋Œ€์ƒ์œผ๋กœ ์›๋ณธ์„ ๊ฐ์ฒด๋กœ ๋ฐ›์•„๋“ค์ผ ๋•Œ๋Š” ์ด๋ฏธ ๊ฐ์ฒด๊ฐ€ ์ƒ์„ฑ๋˜์–ด ์žˆ๊ณ  ๊ฐ’๋„ ์ƒ์„ฑ๋œ ์ƒํƒœ์ด๋‹ค.
๋Œ€์ž… ์—ฐ์‚ฐ์ž๊ฐ€ ํ•˜๋Š” ์ผ์€ ์†Œ๋ฉธ์ž์™€ ๋ณต์ œ ์ƒ์„ฑ์ž๊ฐ€ ์—ฐ๋‹ฌ์•„ ํ˜ธ์ถœํ•˜๋Š” ๊ฒƒ๊ณผ ๋น„์Šทํ•˜๋‹ค.
๋ณต์ œ์™€ ๋Œ€์ž…์˜ ๊ด€๋ฆฌ
Spreadsheet ํด๋ž˜์Šค์˜ ๋Œ€์ž… ์—ฐ์‚ฐ์ž ๊ตฌํ˜„.
๋จผ์ € ์ž๊ธฐ ์ž์‹ ์„ ๋Œ€์ž…ํ•˜๋Š”์ง€ ๊ฒ€์‚ฌํ•œ๋‹ค. ์ด๋Ÿฌํ•œ ์ž‘์—…์„ ํ•˜๋Š” ์ด์œ ๋Š” ์„ฑ๋Šฅ ์ตœ์ ํ™”์™€ ์˜ค๋ฅ˜๋ฅผ ๋ฐฉ์ง€ํ•˜๊ธฐ ์œ„ํ•จ์ด๋‹ค.
๋งŒ์•ฝ ์ž๊ธฐ ์ž์‹ ์ธ์ง€ ํ™•์ธํ•˜๋Š” ์ฝ”๋“œ๊ฐ€ ์—†๋‹ค๋ฉด ์ž๊ธฐ ์ž์‹ ์„ ๋Œ€์ž…ํ•˜๋Š” ์ฝ”๋“œ๊ฐ€ ์‹คํ–‰๋  ๋•Œ
ํ”„๋กœ๊ทธ๋žจ์ด ์ž˜๋ชป๋œ ๋ฉ”๋ชจ๋ฆฌ ์ ‘๊ทผ์œผ๋กœ ๋น„์ •์ƒ ์ข…๋ฃŒ๋  ์ˆ˜๋„ ์žˆ๋‹ค.
์™œ๋ƒํ•˜๋ฉด ๋Œ€์ž… ๋Œ€์ƒ ๊ฐ์ฒด์—์„œ๋Š” ๋ณด์œ ํ•˜๊ณ  ์žˆ๋˜ ๋™์  ๋ฉ”๋ชจ๋ฆฌ๋“ค์„ ๋Œ€์ž…ํ•˜๊ธฐ ์ „์—
๋จผ์ € ํ•ด์ œํ•˜๋Š”๋ฐ, ๋Œ€์ƒ๊ณผ ์›๋ณธ์ด ๊ฐ™์œผ๋ฏ€๋กœ ์ด ์ˆœ๊ฐ„์— ์›๋ณธ ๊ฐ์ฒด์˜ ๋ฉ”๋ชจ๋ฆฌ๋„ ํ•ด์ œ๋˜์–ด
ํฌ์ธํ„ฐ ๋ฉค๋ฒ„๊ฐ€ ๋Œ•๊ธ€๋ง ํฌ์ธํ„ฐ๊ฐ€ ๋˜์–ด ๋ฒ„๋ฆฐ๋‹ค.
๊ทธ๋ž˜์„œ ๋ณต์ œ ์ž‘์—… ์‹œ ๋Œ•๊ธ€๋ง ํฌ์ธํ„ฐ๋ฅผ ์ฐธ์กฐํ•˜๊ฒŒ ๋˜๊ณ  ์–ด๋–ค ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ• ์ง€ ์•Œ ์ˆ˜ ์—†๋‹ค.
๋ณต์ œ์™€ ๋Œ€์ž…์˜ ๊ด€๋ฆฌ
๋Œ€์ž… ์—ฐ์‚ฐ์ž๋ฅผ ๊ตฌํ˜„ํ•˜๊ฒŒ ๋˜๋ฉด, ์‚ฌ์‹ค์ƒ ์†Œ๋ฉธ์ž, ๋ณต์ œ ์ƒ์„ฑ์ž๊นŒ์ง€ ํ•จ๊ป˜ ๊ตฌํ˜„ํ•˜๋Š” ์…ˆ์ด ๋œ๋‹ค.
๋”ฐ๋ผ์„œ ๋Œ€์ž… ์—ฐ์‚ฐ์ž, ์†Œ๋ฉธ์ž, ๋ณต์ œ ์ƒ์„ฑ์ž๋“ค์€ ์„œ๋กœ ์—ฐ๊ด€๋œ ์ฝ”๋“œ๋ฅผ ๊ฐ€์งˆ ์ˆ˜๋ฐ–์— ์—†๋‹ค.
๋ณต์ œ ์ƒ์„ฑ์ž์™€ ๋Œ€์ž… ์—ฐ์‚ฐ์ž๋Š” ์ƒ๋‹นํžˆ ์œ ์‚ฌํ•˜๋ฏ€๋กœ, ๊ณตํ†ต์ ์ธ ์ž‘์—… ๋ถ€๋ถ„์„ ๋นผ๋‘๋ฉด ์ค‘๋ณต ์ฝ”๋“œ๋ฅผ ํ”ผํ•  ์ˆ˜ ์žˆ๋‹ค.
๋ณต์ œ์™€ ๋Œ€์ž…์˜ ๊ด€๋ฆฌ
ํด๋ž˜์Šค์—์„œ ๋™์  ๋ฉ”๋ชจ๋ฆฌ ํ• ๋‹น์„ ์‚ฌ์šฉํ•  ๋•Œ ๋ณต์ œ์™€ ๋Œ€์ž… ๋•Œ๋ฌธ์— ๋ฐœ์ƒํ•˜๋Š” ๋ฌธ์ œ๋ฅผ ํ”ผํ•˜๋Š”
๊ฐ€์žฅ ์‰ฌ์šด ๋ฐฉ๋ฒ•์€ ๋ณต์ œ์™€ ๋Œ€์ž…์ด ๋ฐœ์ƒํ•˜์ง€ ์•Š๋„๋ก ๋ง‰๋Š” ๊ฒƒ์ด๋‹ค.
operator=๊ณผ ๋ณต์ œ ์ƒ์„ฑ์ž๋ฅผ private๋กœ ์„ ์–ธํ•˜๋ฉด ์‰ฝ๊ฒŒ ๋ง‰์„ ์ˆ˜ ์žˆ๋‹ค.
์—ฌ๋Ÿฌ ์ข…๋ฅ˜์˜ ๋ฐ์ดํ„ฐ ๋ฉค๋ฒ„ ๋ณ€์ˆ˜
STATIC ๋ฐ์ดํ„ฐ ๋ฉค๋ฒ„, CONST ๋ฐ์ดํ„ฐ ๋ฉค๋ฒ„, ์ฐธ์กฐํ˜• ๋ฐ์ดํ„ฐ ๋ฉค๋ฒ„, CONST ์ฐธ์กฐํ˜• ๋ฐ์ดํ„ฐ ๋ฉค๋ฒ„
STATIC ๋ฐ์ดํ„ฐ ๋ฉค๋ฒ„
static ๋ฐ์ดํ„ฐ ๋ฉค๋ฒ„๋Š” C์—์„œ์˜ ์ „์—ญ ๋ณ€์ˆ˜์™€ ์œ ์‚ฌํ•˜๋‚˜ ํŠน์ • ํด๋ž˜์Šค์— ์ข…์†๋œ๋‹ค๋Š” ์ ์ด ๋‹ค๋ฅด๋‹ค.
C++11์—์„œ๋Š” constexpr์„ ํ†ตํ•ด static ๋ฉค๋ฒ„ ๋ณ€์ˆ˜๋ฅผ ์„ ์–ธ๊ณผ ๋™์‹œ์— ์ดˆ๊ธฐํ™”ํ•  ์ˆ˜ ์žˆ๊ณ ,
์ถ”๊ฐ€์ ์ธ ์ž‘์—… ์—†์ด ๋ฐ”๋กœ static ๋ณ€์ˆ˜์˜ ์‚ฌ์šฉ์ด ๊ฐ€๋Šฅํ•˜๋‹ค.
Visual Studio 2013์—์„œ๋Š”
constexpr ํ‚ค์›Œ๋“œ๋ฅผ ์ง€์›ํ•˜์ง€ ์•Š๋Š”๋‹ค.
(gcc 4.8.1์€ ์ง€์›, โ€“std=c++11 ์˜ต์…˜ ํ•„์š”)
์ž์„ธํ•œ ์‚ฌํ•ญ์€ N2756 ๋ฌธ์„œ*๋ฅผ ์ฐธ์กฐ
C++11์ด ์ง€์›๋˜์ง€ ์•Š๋Š” ํ™˜๊ฒฝ์—์„œ๋Š”
cpp ํŒŒ์ผ์— sCounter ๋ณ€์ˆ˜์˜ ๋ฉ”๋ชจ๋ฆฌ๋ฅผ
ํ• ๋‹นํ•˜๊ณ  ์ดˆ๊ธฐํ™”ํ•ด์•ผ ํ•œ๋‹ค.
๊ฐ ์Šคํ”„๋ ˆ๋“œ์‹œํŠธ๋งˆ๋‹ค ์ˆœ๋ฒˆ์„ ๋งค๊ธฐ๋Š” ๋ณ€์ˆ˜
* http://www.open-std.org/JTC1/SC22/WG21/docs/papers/2008/n2756.htm
STATIC ๋ฐ์ดํ„ฐ ๋ฉค๋ฒ„
๋ฉ”์„œ๋“œ ์•ˆ์—์„œ๋Š” static ๋ฉค๋ฒ„๋ฅผ ์ผ๋ฐ˜ ๋ฉค๋ฒ„ ๋ณ€์ˆ˜์™€ ๊ฐ™์€ ๋ฐฉ์‹์œผ๋กœ ์ด์šฉํ•  ์ˆ˜ ์žˆ๋‹ค.
๊ฐ์ฒด๊ฐ€ ์ƒ์„ฑ๋  ๋•Œ ๋ณต์ œ ์ƒ์„ฑ์ž๊ฐ€ ์ด์šฉ๋  ์ˆ˜๋„ ์žˆ๋‹ค๋Š” ๊ฒƒ์„ ์žŠ์ง€ ๋ง์ž. ๋”ฐ๋ผ์„œ ๊ณ ์œ  ์ˆœ๋ฒˆ ํ• ๋‹น ์ž‘์—…์„ ํ•œ๋‹ค.
๋Œ€์ž… ์—ฐ์‚ฐ์ž๋Š” ๊ณ ์œ  ์ˆœ๋ฒˆ ํ• ๋‹น์ด ํ•„์š”์—†๋‹ค. ๊ณ ์œ  ์ˆœ๋ฒˆ์€ ๊ฐ์ฒด ์ƒ์„ฑ ์‹œ์ ์— ํ•œ ๋ฒˆ ํ• ๋‹น๋œ ํ›„ ๋ณ€๊ฒฝ๋˜์ง€ ์•Š์•„์•ผ ํ•œ๋‹ค.
๋ณต์ œ ์ƒ์„ฑ์ž
์ƒ์„ฑ์ž
CONST ๋ฐ์ดํ„ฐ ๋ฉค๋ฒ„
ํด๋ž˜์Šค์˜ ๋ฐ์ดํ„ฐ ๋ฉค๋ฒ„๋ฅผ const๋กœ ์„ ์–ธํ•˜๋ฉด, ์ƒ์„ฑ ์‹œ์ ์— ์ดˆ๊นƒ๊ฐ’์„ ๋ถ€์—ฌํ•œ ๋‹ค์Œ ๋”๋Š” ๊ฐ’์„ ๋ณ€๊ฒฝํ•  ์ˆ˜ ์—†๊ฒŒ ๋œ๋‹ค.
๊ทธ๋Ÿฐ๋ฐ ๊ฐ์ฒด ์ˆ˜์ค€์—์„œ ์ƒ์ˆซ๊ฐ’์„ ๋ณด์œ ํ•˜๋Š” ๊ฒƒ์€ ๋Œ€๋ถ€๋ถ„ ๋ฉ”๋ชจ๋ฆฌ ๋‚ญ๋น„์ด๋‹ค.
์ด๋•Œ๋Š” static const ๋ฉค๋ฒ„๋ฅผ ์ด์šฉํ•ด์„œ ๊ฐ์ฒด ๊ฐ„์— ์ƒ์ˆซ๊ฐ’์„ ๊ณต์œ ํ•˜๋„๋ก ํ•  ์ˆ˜ ์žˆ๋‹ค.
์ฐธ์กฐํ˜• ๋ฐ์ดํ„ฐ ๋ฉค๋ฒ„
์Šคํ”„๋ ˆ๋“œ์‹œํŠธ ํ”„๋กœ๊ทธ๋žจ์„ ์™„์„ฑํ•˜๋ ค๋ฉด Spreadsheet, SpreadsheetCell ํด๋ž˜์Šค๊ฐ€
SpreadsheetApplication ํด๋ž˜์Šค์— ํ†ตํ•ฉ๋˜์–ด์•ผ ํ•œ๋‹ค. ๊ทธ๋Ÿฐ๋ฐโ€ฆ
SpreadsheetCell
Spreadsheet
SpreadsheetApplication
Spreadsheet SpreadsheetApplication
SpreadsheetApplication์€ ๋ณต์ˆ˜์˜ Spreadsheet๋ฅผ ๊ด€๋ฆฌํ•˜๊ธฐ ๋•Œ๋ฌธ์—
Spreadsheet ํด๋ž˜์Šค๋ฅผ ์•Œ์•„์•ผ๋งŒ ํ•œ๋‹ค.
๋”ฐ๋ผ์„œ SpreadsheetApplication์„ ์ •์˜ํ•˜๊ธฐ ์ „์— Spreadsheet๊ฐ€ ์ •์˜๋˜์–ด ์žˆ์–ด์•ผ ํ•œ๋‹ค.
Spreadsheet ํด๋ž˜์Šค๋„ SpreadsheetApplication ํด๋ž˜์Šค์™€
์ปค๋ฎค๋‹ˆ์ผ€์ด์…˜ํ•ด์•ผ ํ•˜๊ธฐ ๋–„๋ฌธ์— SpreadsheetApplication์„ ์•Œ์•„์•ผ ํ•œ๋‹ค.
๋”ฐ๋ผ์„œ Spreadsheet์„ ์ •์˜ํ•˜๊ธฐ ์ „์— SpreadsheetApplication์ด ์ •์˜๋˜์–ด ์žˆ์–ด์•ผ ํ•œ๋‹ค.
์ฐธ์กฐํ˜• ๋ฐ์ดํ„ฐ ๋ฉค๋ฒ„
#include๋กœ๋Š” ํ•ด๊ฒฐํ•  ๋ฐฉ๋ฒ•์ด ์—†๋‹ค. ์ด์— ๋Œ€ํ•œ ํ•ด๊ฒฐ์ฑ…์œผ๋กœ ํฌ์›Œ๋“œ ์„ ์–ธ(Forward Declaration)์ด ์žˆ๋‹ค.
๊ต์ฐจ ์ฐธ์กฐ๋˜๋Š” ํด๋ž˜์Šค์˜ ํ—ค๋” ํŒŒ์ผ ์ค‘ ์–ด๋Š ํ•œ ์ชฝ์— ์ƒ๋Œ€ํŽธ ํด๋ž˜์Šค์˜ ํ—ค๋”๋ฅผ ์ธํด๋ฃจ๋“œํ•˜๋Š” ๋Œ€์‹ 
ํฌ์›Œ๋“œ ์„ ์–ธ์„ ํ•ด๋‘๋ฉด ์ปดํŒŒ์ผ๋Ÿฌ๊ฐ€ ๋‚˜์ค‘์— ํ•ด๋‹น ์ •์˜๋ฅผ ์ฐพ์•„๋‹ค๊ฐ€ ํƒ€์ž… ๋งค์นญ์„ ํ•œ๋‹ค.
์ฐธ์กฐํ˜• ๋ฐ์ดํ„ฐ ๋ฉค๋ฒ„
์ฐธ์กฐํ˜• ๋ณ€์ˆ˜๋Š” ์ƒ์„ฑ๊ณผ ๋™์‹œ์— ๋‹ค๋ฅธ ๊ฐ์ฒด๋ฅผ ์ฐธ์กฐํ•˜๋„๋ก ์ดˆ๊ธฐํ™”ํ•ด์•ผ ํ•œ๋‹ค.
ํ•œ ๋ฒˆ ์ดˆ๊ธฐํ™”๋˜๊ณ  ๋‚˜๋ฉด ๋‹ค๋ฅธ ๊ฐ’์œผ๋กœ ๋ฐ”๊ฟ€ ์ˆ˜๊ฐ€ ์—†๋‹ค.
CONST ์ฐธ์กฐํ˜• ๋ฐ์ดํ„ฐ ๋ฉค๋ฒ„
const ์ฐธ์กฐํ˜• ๋ณ€์ˆ˜๋กœ ์ฐธ์กฐ๋œ ๊ฐ์ฒด๋Š” const ๋ฉ”์„œ๋“œ๋งŒ ์ด์šฉํ•  ์ˆ˜ ์žˆ๋‹ค.
๋งŒ์•ฝ const ์ฐธ์กฐ๋œ ๊ฐ์ฒด์—์„œ const๊ฐ€ ์•„๋‹Œ ๋ฉ”์„œ๋“œ๋ฅผ ํ˜ธ์ถœํ•˜๋ฉด ์ปดํŒŒ์ผ ์—๋Ÿฌ๊ฐ€ ๋ฐœ์ƒํ•œ๋‹ค.
static ์ฐธ์กฐํ˜• ๋ฉ”๋ฒ„๋‚˜ static const ์ฐธ์กฐํ˜• ๋ฉค๋ฒ„๋„ ์„ ์–ธํ•  ์ˆ˜ ์žˆ์ง€๋งŒ ํŠน๋ณ„ํ•œ ์˜๋ฏธ๋Š” ์—†๋‹ค.
๋ฉ”์„œ๋“œ์˜ ์ข…๋ฅ˜
STATIC ๋ฉ”์„œ๋“œ, CONST ๋ฉ”์„œ๋“œ, ๋ฉ”์„œ๋“œ ์˜ค๋ฒ„๋กœ๋”ฉ, ๋””ํดํŠธ ํŒŒ๋ผ๋ฏธํ„ฐ, INLINE ๋ฉ”์„œ๋“œ
STATIC ๋ฉ”์„œ๋“œ
static ๋ฉ”์„œ๋“œ์˜ ์„ ์–ธ ๋ฐฉ๋ฒ•์€ static ๋ฐ์ดํ„ฐ ๋ฉค๋ฒ„์™€ ๊ฐ™๋‹ค. (ํŠน์ • ํด๋ž˜์Šค์˜ ๋ชจ๋“  ๊ฐ์ฒด์— ๊ณตํ†ต์ ์œผ๋กœ ์ ์šฉ)
static ๋ฉ”์„œ๋“œ๋Š” ๊ฐ์ฒด์— ๋ฌถ์ด์ง€ ์•Š๊ธฐ ๋•Œ๋ฌธ์— โ€œ๊ฐ์ฒด์— ๋ณ€๊ฒฝ์„ ๊ฐ€ํ•˜์ง€ ์•Š๋Š”๋‹ค.โ€๋ผ๋Š” ์‹œ๋งจํ‹ฑ์„ ์ ์šฉํ•  ์ˆ˜ ์—†๋‹ค.
๋”ฐ๋ผ์„œ static ๋ฉ”์„œ๋“œ๋ฅผ ์„ ์–ธํ•˜๋ ค๋ฉด const๋ฅผ ๋นผ์•ผ ํ•œ๋‹ค.
CONST ๋ฉ”์„œ๋“œ
๋ฉ”์‹œ์ง€๋ฅผ const๋กœ ์„ ์–ธํ•˜๋ฉด ๋ฉ”์„œ๋“œ ํ˜ธ์ถœ ๋•Œ๋ฌธ์— ๊ฐ์ฒด์˜ ๋ฐ์ดํ„ฐ ๊ฐ’์ด ๋ฐ”๋€Œ์ง€ ์•Š๋Š”๋‹ค๋Š” ๊ฒƒ์„ ๋ณด์ฆํ•ด์ค€๋‹ค.
๋งŒ์•ฝ const๋กœ ์„ ์–ธํ•œ ๋ฉ”์„œ๋“œ ์•ˆ์—์„œ ๊ฐ์ฒด์˜ ๋ฐ์ดํ„ฐ ๋ฉค๋ฒ„๋ฅผ ๋ณ€๊ฒฝํ•˜๋ ค ํ•˜๋ฉด ์ปดํŒŒ์ผ๋Ÿฌ๊ฐ€ ์˜ค๋ฅ˜ ๋ฉ”์‹œ์ง€๋ฅผ ์ถœ๋ ฅํ•  ์ˆ˜ ์žˆ๋‹ค.
const ๋ฉ”์„œ๋“œ์˜ ๋™์ž‘ ๋ฐฉ์‹์€ ๋ฉ”์„œ๋“œ ๋‚ด์—์„œ ์ ‘๊ทผํ•˜๋Š” ๋ชจ๋“  ๋ฐ์ดํ„ฐ ๋ฉค๋ฒ„๋ฅผ const๋กœ ์ทจ๊ธ‰ํ•˜๋Š” ๋ฐฉ๋ฒ•์œผ๋กœ ๊ตฌํ˜„๋œ๋‹ค.
CONST ๋ฉ”์„œ๋“œ
const๊ฐ€ ์•„๋‹Œ ๊ฐ์ฒด์— ๋Œ€ํ•ด์„œ๋Š” const ์—ฌ๋ถ€์™€ ๊ด€๊ณ„์—†์ด ๋ชจ๋“  ๋ฉ”์„œ๋“œ๋ฅผ ํ˜ธ์ถœํ•  ์ˆ˜ ์žˆ๋‹ค.
ํ•˜์ง€๋งŒ const ๊ฐ์ฒด์— ๋Œ€ํ•ด์„œ๋Š” const ๋ฉ”์„œ๋“œ๋งŒ ํ˜ธ์ถœํ•  ์ˆ˜ ์žˆ๋‹ค.
๊ฐ€๋Šฅํ•˜๋‹ค๋ฉด ๊ฐ์ฒด๋ฅผ ๋ณ€๊ฒฝํ•˜์ง€ ์•Š๋Š” ๋ชจ๋“  ๋ฉ”์„œ๋“œ์— const ์ œํ•œ์ž๋ฅผ ์ ์šฉํ•ด const ๊ฐ์ฒด๋ฅผ ํ˜ธ์ถœํ•˜๋Š” ๊ฒƒ์ด ๋ฐ”๋žŒ์งํ•˜๋‹ค.
CONST ๋ฉ”์„œ๋“œ
๋ฉ”์„œ๋“œ๊ฐ€ ๊ฐ์ฒด์˜ ํŠน์ • ๋ฐ์ดํ„ฐ ๋ฉค๋ฒ„๋ฅผ ๋ณ€๊ฒฝํ•˜๊ธฐ๋Š” ํ•˜์ง€๋งŒ ๋…ผ๋ฆฌ์ ์œผ๋กœ๋Š” const์ธ ๊ฒฝ์šฐ๊ฐ€ ์žˆ๋‹ค.
์Šคํ”„๋ ˆ๋“œ์‹œํŠธ ํ”„๋กœ๊ทธ๋žจ์˜ ์‚ฌ์šฉ์ž ์ด์šฉ ์„ฑํ–ฅ์„ ํ”„๋กœํŒŒ์ผ๋ง ํ•ด๋ณด๊ธฐ ์œ„ํ•ด ์ ‘๊ทผ ์นด์šดํ„ฐ๋ฅผ ๊ตฌํ˜„ํ–ˆ๋‹ค๊ณ  ํ•˜์ž.
์ด ์นด์šดํ„ฐ๋Š” ๊ฐ์ฒด์˜ ๋ฐ์ดํ„ฐ์— ๋ณ€ํ™”๋ฅผ ์ฃผ์ง€ ์•Š์ง€๋งŒ, ์ปดํŒŒ์ผ๋Ÿฌ์—์„œ๋Š” ๊ฐ์ฒด์˜ ๋ฐ์ดํ„ฐ ๋ฉค๋ฒ„๋ฅผ ๋ณ€๊ฒฝํ•˜๋Š” ํ–‰์œ„์™€ ๊ตฌ๋ณ„์ด ์•ˆ๋œ๋‹ค.
mutable ์†์„ฑ์„ ์นด์šดํ„ฐ ๋ฉค๋ฒ„ ๋ณ€์ˆ˜์— ์ ์šฉํ•˜๋ฉด ํ•ด๋‹น ๋ณ€์ˆ˜์˜ ๋ณ€๊ฒฝ์ด ๋ฉ”์„œ๋“œ์˜ const์— ์˜ํ–ฅ์„ ๋ฏธ์น˜์ง€ ์•Š๋Š” ๊ฒƒ์œผ๋กœ ๊ฐ„์ฃผํ•œ๋‹ค.
๋ฉ”์„œ๋“œ ์˜ค๋ฒ„๋กœ๋”ฉ
์•ž์„œ ํด๋ž˜์Šค ์ƒ์„ฑ์ž๋Š” ์ด๋ฆ„์ด ๊ฐ™๋”๋ผ๋„ ํŒŒ๋ผ๋ฏธํ„ฐ์˜ ํƒ€์ž…์ด๋‚˜ ๊ฐœ์ˆ˜๊ฐ€ ๋‹ค๋ฅด๋‹ค๋ฉด ์—ฌ๋Ÿฌ ๊ฐœ๋ฅผ ์ •์˜ํ•  ์ˆ˜ ์žˆ์—ˆ๋‹ค.
๊ทธ๋Ÿฐ๋ฐ ์ด๋Ÿฌํ•œ ์ •์˜ ๋ฐฉ์‹์€ ์ผ๋ฐ˜ ๋ฉ”์„œ๋“œ๋‚˜ ํ•จ์ˆ˜์—๋„ ๊ทธ๋Œ€๋กœ ์ ์šฉ๋œ๋‹ค.
์ด๋ฆ„์ด ๊ฐ™์€ ๋ฉ”์„œ๋“œ, ํ•จ์ˆ˜๋ฅผ ํŒŒ๋ผ๋ฏธํ„ฐ๋งŒ ๋‹ฌ๋ฆฌํ•˜์—ฌ ์ •์˜ํ•˜๋Š” ๊ฒƒ์„ ์˜ค๋ฒ„๋กœ๋”ฉ(Overloading)์ด๋ผ ํ•œ๋‹ค.
์ปดํŒŒ์ผ๋Ÿฌ๊ฐ€ set() ๋ฉ”์„œ๋“œ์˜ ํ˜ธ์ถœ์„ ๋งŒ๋‚˜๋ฉด ์ธ์ž์˜ ๋ฐ์ดํ„ฐ ํƒ€์ž…๊ณผ ๊ฐœ์ˆ˜๋ฅผ ๋ณด๊ณ  ์ ํ•ฉํ•œ ๋ฉ”์„œ๋“œ๋กœ ๋งคํ•‘ํ•ด์ค€๋‹ค.
์ด๋Ÿฌํ•œ ๋ฉ”์ปค๋‹ˆ์ฆ˜์„ ์˜ค๋ฒ„๋กœ๋“œ ์ง€์ •(Overload Resolution)์ด๋ผ๊ณ  ํ•œ๋‹ค.
๋ฐ์ดํ„ฐ ํƒ€์ž… : int
๊ฐœ์ˆ˜ : 1๊ฐœ
๋ฐ์ดํ„ฐ ํƒ€์ž… : string
๊ฐœ์ˆ˜ : 1๊ฐœ
๋ฉ”์„œ๋“œ ์˜ค๋ฒ„๋กœ๋”ฉ
C++์—์„œ๋Š” ํŒŒ๋ผ๋ฏธํ„ฐ์— ์ฐจ์ด๊ฐ€ ์—†์ด ๋ฆฌํ„ด ํƒ€์ž…์œผ๋งŒ ๋‹ค๋ฅธ ๋ฉ”์„œ๋“œ๋‚˜ ํ•จ์ˆ˜์— ๋Œ€ํ•ด์„œ ์˜ค๋ฒ„๋กœ๋”ฉ์„ ํ—ˆ์šฉํ•˜์ง€ ์•Š๋Š”๋‹ค.
์™œ๋ƒํ•˜๋ฉด ๋ฆฌํ„ด ํƒ€์ž…์˜ ์ฐจ์ด๋งŒ์œผ๋กœ๋Š” ์ปดํŒŒ์ผ๋Ÿฌ๊ฐ€ ์˜ค๋ฒ„๋กœ๋“œ ์ง€์ •์„ ์ง€์ •ํ•  ์ˆ˜ ์—†๋Š” ์ƒํ™ฉ์ด ๋งŽ๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค.
const ์ œํ•œ์ž์— ๊ธฐ๋ฐ˜ํ•œ ์˜ค๋ฒ„๋กœ๋”ฉ๋„ ๊ฐ€๋Šฅํ•˜๋‹ค. ์ด๋ฆ„๊ณผ ํŒŒ๋ผ๋ฏธํ„ฐ๊ฐ€ ๊ฐ™์€ ๋‘ ๋ฉ”์„œ๋“œ ์ค‘ ์–ด๋Š ํ•œ ์ชฝ๋งŒ const๋ผ๋ฉด,
๊ทธ ๋ฉ”์„œ๋“œ๋ฅผ ํ˜ธ์ถœํ•œ ๊ฐ์ฒด์˜ ํƒ€์ž…์ด const๋ƒ ์•„๋‹ˆ๋ƒ์— ๋งž์ถฐ์„œ ์ปดํŒŒ์ผ๋Ÿฌ๊ฐ€ ํ˜ธ์ถœ๋  ๋ฉ”์„œ๋“œ๋ฅผ ์ง€์ •ํ•  ์ˆ˜ ์žˆ๋‹ค.
๋ฉ”์„œ๋“œ ์˜ค๋ฒ„๋กœ๋”ฉ
C++11์—์„œ๋Š” ํŠน์ • ํŒŒ๋ผ๋ฏธํ„ฐ ํƒ€์ž…์˜ ์˜ค๋ฒ„๋กœ๋“œ ๋ฉ”์„œ๋“œ๊ฐ€ ์‚ฌ์šฉ๋˜์ง€ ์•Š๋„๋ก ๋ช…์‹œ์ ์œผ๋กœ ์‚ญ์ œํ•  ์ˆ˜๋„ ์žˆ๋‹ค.
c.foo(1);
double ํƒ€์ž… ๊ฐ’ 1.2์„
์ •์ˆ˜ 1๋กœ ํƒ€์ž… ์บ์ŠคํŒ…
๋””ํดํŠธ ํŒŒ๋ผ๋ฏธํ„ฐ
๋””ํดํŠธ ํŒŒ๋ผ๋ฏธํ„ฐ๋Š” ํ•จ์ˆ˜๋‚˜ ๋ฉ”์„œ๋“œ์˜ ์›ํ˜•์„ ์„ ์–ธํ•  ๋•Œ ๊ฐ ํŒŒ๋ผ๋ฏธํ„ฐ์— ๋””ํดํŠธ ๊ฐ’์„ ์ง€์ •ํ•  ์ˆ˜ ์žˆ๋‹ค.
๋งŒ์•ฝ ์‚ฌ์šฉ์ž๊ฐ€ ํ•ด๋‹น ์ธ์ž๋ฅผ ์ง์ ‘ ์ œ๊ณตํ•˜๋ฉด ๋””ํดํŠธ ๊ฐ’์€ ๋ฌด์‹œ๋˜๋ฉฐ, ๊ณต๋ž€์œผ๋กœ ํ•˜๋ฉด ๋””ํดํŠธ ๊ฐ’์ด ์ž๋™์œผ๋กœ ์ ์šฉ๋œ๋‹ค.
๋””ํดํŠธ ํŒŒ๋ผ๋ฏธํ„ฐ๋Š” ๊ฐ€์žฅ ์˜ค๋ฅธ์ชฝ ํŒŒ๋ผ๋ฏธํ„ฐ๋ถ€ํ„ฐ ์‹œ์ž‘ํ•ด ํŒŒ๋ผ๋ฏธํ„ฐ ๊ฑด๋„ˆ๋œ€ ์—†์ด ์—ฐ์†์ ์œผ๋กœ๋งŒ ์ ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค.
s1(theApp, 100, 100)
s1(theApp, 5, 100)
s1(theApp, 5, 6)
INLINE ๋ฉ”์„œ๋“œ
C++์—์„œ๋Š” ๋ฉ”์„œ๋“œ๋‚˜ ํ•จ์ˆ˜๋ฅผ ๋ณ„๋„์˜ ๋ถ„๋ฆฌ๋œ ์ฝ”๋“œ ๋ธ”๋ก์œผ๋กœ ํ˜ธ์ถœํ•˜๋Š” ๋Œ€์‹ , ํ˜ธ์ถœ ์ง€์ ์— ๋ฐ”๋กœ ๋ฉ”์„œ๋“œ๋‚˜
ํ•จ์ˆ˜์˜ ๋ฐ”๋””๋ฅผ ์˜ฎ๊ฒจ ๋„ฃ์–ด ํ˜ธ์ถœ ์˜ค๋ฒ„ํ—ค๋“œ๋ฅผ ์ค„์ด๋Š” ๋ฐฉ๋ฒ•์„ ์ œ๊ณตํ•œ๋‹ค.์ด๋Ÿฌํ•œ ๋ฐฉ๋ฒ•์„ ์ธ๋ผ์ด๋‹(Inlining)์ด๋ผ ํ•œ๋‹ค.
inline์ด ์ œ๋Œ€๋กœ ๋™์ž‘ํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” ํ•ด๋‹น ๋ฉ”์„œ๋“œ, ํ•จ์ˆ˜์˜ ๋ฐ”๋”” ๋‚ด์šฉ์„ ํ•ด๋‹น ์ฝ”๋“œ์˜ ์ปดํŒŒ์ผ ์‹œ์ ์— ๊ฐ€์ง€๊ณ  ์žˆ์–ด์•ผ๋งŒ ํ•œ๋‹ค.
์ด ๋•Œ๋ฌธ์— inline ๋ฉ”์„œ๋“œ, ํ•จ์ˆ˜๋Š” .cpp ํŒŒ์ผ์ด ์•„๋‹Œ .h ํ—ค๋” ํŒŒ์ผ์—์„œ ์ •์˜๋ฅผ ๊ฐ€์ง„๋‹ค.
INLINE ๋ฉ”์„œ๋“œ
C++๋Š” inline ํ‚ค์›Œ๋“œ๋ฅผ ์‚ฌ์šฉํ•˜์ง€ ์•Š๊ณ ๋„ ๋ฉ”์„œ๋“œ๋ฅผ ์ธ๋ผ์ด๋‹ํ•  ์ˆ˜ ์žˆ๋Š” ๋ฐฉ๋ฒ•์„ ์ œ๊ณตํ•œ๋‹ค.
๋ฉ”์„œ๋“œ์˜ ๊ตฌํ˜„๋ถ€๋ฅผ ํด๋ž˜์Šค ์ •์˜ ํ›„์— ๋”ฐ๋กœ ๋งŒ๋“œ๋Š” ๋Œ€์‹ , ์•ˆ์—์„œ ๋ฐ”๋กœ ๊ตฌํ˜„๋ถ€๋ฅผ ์ •์˜ํ•˜๋ฉด ๋œ๋‹ค.
๋‹ค๋งŒ, inline์œผ๋กœ ์„ ์–ธํ–ˆ๋”๋ผ๋„ ์‹ค์ œ๋กœ ์ธ๋ผ์ด๋‹๋ ์ง€ ์•ˆ๋ ์ง€๋Š” ์ƒํ™ฉ์— ๋”ฐ๋ผ ๋‹ค๋ฅด๋‹ค.
์ปดํŒŒ์ผ๋Ÿฌ๋Š” ์ž‘์€ ํฌ๊ธฐ์˜ ๋ฉ”์„œ๋“œ, ํ•จ์ˆ˜๋งŒ ์ธ๋ผ์ด๋‹ํ•œ๋‹ค.
๋งŒ์•ฝ ์ ์ ˆํ•˜์ง€ ์•Š์€ ๋ฉ”์„œ๋“œ, ํ•จ์ˆ˜๋ฅผ ์ธ๋ผ์ด๋‹ํ•˜๋ ค ํ•˜๋ฉด ์ปดํŒŒ์ผ๋Ÿฌ๊ฐ€ ๋ฌด์‹œํ•ด ๋ฒ„๋ฆฐ๋‹ค.
์ค‘์ฒฉ๋œ ํด๋ž˜์Šค
์ค‘์ฒฉ๋œ ํด๋ž˜์Šค
ํด๋ž˜์Šค ์ •์˜๊ฐ€ ๋ฉ”์„œ๋“œ๋‚˜ ๋ฐ์ดํ„ฐ ๋ฉค๋ฒ„๋งŒ ๋‹ด์„ ์ˆ˜ ์žˆ๋Š” ๊ฒƒ์€ ์•„๋‹ˆ๋‹ค.
ํด๋ž˜์Šค ์ •์˜์—๋Š” struct, typedef, enum๋„ ํฌํ•จ๋  ์ˆ˜ ์žˆ๋‹ค. ๋‹จ, public์œผ๋กœ ์„ ์–ธ๋˜์–ด ์žˆ์–ด์•ผ ํ•œ๋‹ค.
ํด๋ž˜์Šค ์•ˆ์— ๋˜ ๋‹ค๋ฅธ ํด๋ž˜์Šค๋ฅผ ์ •์˜ํ•˜๋Š” ๊ฒƒ๋„ ๊ฐ€๋Šฅํ•˜๋‹ค.
์ค‘์ฒฉ๋œ ํด๋ž˜์Šค
SpreadsheetCell ํด๋ž˜์Šค๋ฅผ ์ด์šฉํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” ์Šค์ฝ”ํ”„ ์ง€์ • ์—ฐ์‚ฐ์ž์— Spreadsheet::์„ ๋ถ™์—ฌ์•ผ ํ•œ๋‹ค.
์ด๋Ÿฌํ•œ ๋ฌธ๋ฒ•์€ ์ฝ”๋“œ๋ฅผ ์ง€์ €๋ถ„ํ•˜๊ฒŒ ๋งŒ๋“ ๋‹ค. ์ด ๋•Œ๋Š” typedef๋ฅผ ์ด์šฉํ•ด ์ถ•์•ฝํ•ด์„œ ์‚ฌ์šฉํ•œ๋‹ค.
ํด๋ž˜์Šค ์ข…์† ๋‚˜์—ดํ˜• ๋ฐ์ดํ„ฐ ํƒ€์ž…
ํด๋ž˜์Šค ์ข…์† ๋‚˜์—ดํ˜• ๋ฐ์ดํ„ฐ ํƒ€์ž…
์ƒ์ˆซ๊ฐ’๋“ค์„ ์ •์˜ํ•ด์•ผ ํ•œ๋‹ค๋ฉด #define ๋Œ€์‹  ๋‚˜์—ดํ˜• ํƒ€์ž…์„ ์ด์šฉํ•˜๋Š” ๊ฒƒ์ด ์ข‹๋‹ค.
#define ์ƒ์ˆ˜๋ฅผ ์ด์šฉํ•˜๋ฉด ์ƒ‰์ƒ ๋ณ€์ˆ˜์˜ ํƒ€์ž…์„ int๋กœ ํ•  ์ˆ˜ ๋ฐ–์— ์—†๋‹ค.
๊ทธ๋Ÿฌ๋ฉด ์ƒ‰์ƒ์œผ๋กœ ์ •์˜๋˜์ง€ ์•Š์€ ์ƒ์ˆซ๊ฐ’์ด ์„ค์ •๋  ๊ฐ€๋Šฅ์„ฑ์ด ์žˆ์–ด ์ด์— ๋Œ€ํ•œ ๊ฒ€์‚ฌ๋ฅผ ๋Ÿฐํƒ€์ž„์— ๋ณ„๋„๋กœ ํ•ด์•ผ ํ•œ๋‹ค.
๋ฐ˜๋ฉด์— ๋‚˜์—ดํ˜• ํƒ€์ž…์„ ์ด์šฉํ•˜๋ฉด ์ปดํŒŒ์ผ๋Ÿฌ๊ฐ€ ๋นŒ๋“œ ํƒ€์ž„์— ์ž˜๋ชป๋œ ์ƒ์ˆ˜์˜ ์ด์šฉ์„ ๊ฒ€์‚ฌํ•ด์ฃผ์–ด ๋” ํšจ์œจ์ ์ด๊ณ  ์•ˆ์ „ํ•˜๋‹ค.
FRIEND ์†์„ฑ
FRIEND ์†์„ฑ
friend ์„ค์ •์„ ์ด์šฉํ•˜๋ฉด ๋‹ค๋ฅธ ํด๋ž˜์Šค ๋˜๋Š” ๋‹ค๋ฅธ ํด๋ž˜์Šค์˜ ๋ฉ”์„œ๋“œ์—์„œ
private๋‚˜ protected๋กœ ์„ ์–ธ๋œ ๋ฉค๋ฒ„ ๋ฐ ๋ฉ”์„œ๋“œ์— ์ ‘๊ทผํ•  ์ˆ˜ ์žˆ๋‹ค.
friend ์„ ์–ธ์€ ๊ถŒํ•œ์„ ์—ด์–ด์ค„ ํด๋ž˜์Šค์—์„œ๋งŒ ํ•  ์ˆ˜ ์žˆ๋‹ค. ์ฆ‰, ๋‹ค๋ฅธ ํด๋ž˜์Šค์— ๋Œ€ํ•ด
์ ‘๊ทผ ๊ถŒํ•œ์„ ์š”์ฒญํ•˜๋Š” ํด๋ž˜์Šค ๋˜๋Š” ๋ฉ”์„œ๋“œ ์Šค์Šค๋กœ ๋‹ค๋ฅธ ํด๋ž˜์Šค์˜ friend ์„ ์–ธ์„ ํ•  ์ˆ˜๋Š” ์—†๋‹ค.
friend๋Š” ๋‚จ์šฉ๋˜๊ธฐ ์‰ฝ๋‹ค. friend๋ฅผ ์ด์šฉํ•˜๋ฉด ๋‚ด๋ถ€ ๊ตฌ์กฐ๋ฅผ ๋‹ค๋ฅธ ํด๋ž˜์Šค๋‚˜ ํ•จ์ˆ˜์— ๋…ธ์ถœํ•˜๊ธฐ ๋•Œ๋ฌธ์—
์ถ”์ƒํ™” ์›์น™์ด ํ›ผ์†๋œ๋‹ค. ์ด ๋•Œ๋ฌธ์— ์—ฐ์‚ฐ์ž ์˜ค๋ฒ„๋กœ๋”ฉ๊ณผ ๊ฐ™์ด ๋ถˆ๊ฐ€ํ”ผํ•œ ์ƒํ™ฉ์—์„œ๋งŒ ์ด์šฉํ•˜๋Š” ๊ฒƒ์ด ๋ฐ”๋žŒ์งํ•˜๋‹ค.
์—ฐ์‚ฐ์ž ์˜ค๋ฒ„๋กœ๋”ฉ
SPREADSHEETCELL์— ๋ง์…ˆ ๊ธฐ๋Šฅ ๊ตฌํ˜„, ์‚ฐ์ˆ  ์—ฐ์‚ฐ์ž์˜ ์˜ค๋ฒ„๋กœ๋”ฉ, ๋น„๊ต ์—ฐ์‚ฐ์ž์˜ ์˜ค๋ฒ„๋กœ๋”ฉ
SPREADSHEETCELL์— ๋ง์…ˆ ๊ธฐ๋Šฅ ๊ตฌํ˜„
1. add ๋ฉ”์„œ๋“œ
SPREADSHEETCELL์— ๋ง์…ˆ ๊ธฐ๋Šฅ ๊ตฌํ˜„
๊ฐ’์— ์˜ํ•œ ์ „๋‹ฌ ๋Œ€์‹ , ๋ณต์ œ๊ฐ€ ์ผ์–ด๋‚˜์ง€ ์•Š๋Š” ์ฐธ์กฐํ˜•์œผ๋กœ ๋ฆฌํ„ดํ•˜๋ฉด ์–ด๋–จ๊นŒ ํ•˜๊ณ  ์ƒ๊ฐํ•  ์ˆ˜๋„ ์žˆ๋‹ค.
ํ•˜์ง€๋งŒ add() ๋ฉ”์„œ๋“œ๊ฐ€ ๋ฆฌํ„ดํ•˜๋Š” ์ˆœ๊ฐ„ newCell ๊ฐ์ฒด๋Š” ์†Œ๋ฉธ๋˜๊ธฐ ๋•Œ๋ฌธ์— ์ฐธ์กฐํ˜•์œผ๋กœ ๋ฆฌํ„ดํ•˜๊ฒŒ ๋˜๋ฉด
๋ฉ”์„œ๋“œ์˜ ํ˜ธ์ถœ์ด ๋๋‚˜์ž๋งˆ์ž ๋Œ•๊ธ€๋ง ์ฐธ์กฐ(Dangling Reference)๊ฐ€ ๋˜์–ด ๋ฒ„๋ฆฐ๋‹ค.
์ด ์ˆœ๊ฐ„, add() ๋ฉ”์„œ๋“œ์—์„œ ์ƒ์„ฑํ–ˆ๋˜ newCell ๊ฐ์ฒด๋Š” ์‚ฌ๋ผ์ง€๊ฒŒ ๋œ๋‹ค.
์ฐธ์กฐํ˜•์€ ์–ด๋–ค ๋ณ€์ˆ˜๋ฅผ ๊ฐ€๋ฆฌ์ผœ์•ผ ๋˜๋Š”๋ฐ ๊ฐ€๋ฆฌํ‚ฌ ๋ณ€์ˆ˜๊ฐ€ ์‚ฌ๋ผ์ง€๊ฒŒ ๋˜์–ด ์œ ํšจํ•˜์ง€ ์•Š๊ฒŒ ๋œ๋‹ค.
SPREADSHEETCELL์— ๋ง์…ˆ ๊ธฐ๋Šฅ ๊ตฌํ˜„
2. operator+์˜ ์˜ค๋ฒ„๋กœ๋”ฉ
SPREADSHEETCELL์— ๋ง์…ˆ ๊ธฐ๋Šฅ ๊ตฌํ˜„
operator+ ๋ฉ”์„œ๋“œ์—์„œ ๋ฐ›๋Š” ํŒŒ๋ผ๋ฏธํ„ฐ ๋‘ ๊ฐœ๊ฐ€ ํ•ญ์ƒ ๊ฐ™์€ ๋ฐ์ดํ„ฐ ํƒ€์ž…์ผ ํ•„์š”๋Š” ์—†๋‹ค.
SpreadsheetCell ํด๋ž˜์Šค์—์„œ Spreadsheet ํด๋ž˜์Šค๋ฅผ ํŒŒ๋ผ๋ฏธํ„ฐ๋กœ ๋ฐ›๋Š” operator+ ๋ฉ”์„œ๋“œ๋ฅผ ์ •์˜ํ•  ์ˆ˜๋„ ์žˆ๋‹ค.
๋…ผ๋ฆฌ์ ์œผ๋กœ๋Š” ๋ง์ด ์•ˆ๋˜์ง€๋งŒ ์ปดํŒŒ์ผ์—๋Š” ์•„๋ฌด๋Ÿฐ ๋ฌธ์ œ๊ฐ€ ์—†๋‹ค.
C++ ์ปดํŒŒ์ผ๋Ÿฌ๊ฐ€ ์ฝ”๋“œ๋ฅผ ํŒŒ์‹ฑํ•˜๋‹ค๊ฐ€ +, -, =๊ณผ ๊ฐ™์€ ๊ธฐํ˜ธ๋ฅผ ๋งŒ๋‚˜๊ฒŒ ๋˜๋ฉด operator+,
operator-, operator=๋ฅผ ๊ฐ๊ฐ ์ฐพ์•„์„œ ํŒŒ๋ผ๋ฏธํ„ฐ ํƒ€์ž…์— ์ ํ•ฉํ•œ ๋ฉ”์„œ๋“œ๋ฅผ ํ˜ธ์ถœํ•˜๊ฒŒ ๋œ๋‹ค.
(SpreadsheetCell ํด๋ž˜์Šค๋‚˜ ์ „์—ญ ํ•จ์ˆ˜ ์ค‘ ๋‘ ๊ฐœ์˜ SpreadsheetCell ํƒ€์ž… ํŒŒ๋ผ๋ฏธํ„ฐ๋ฅผ ๋ฐ›๋Š”
operator+๋ผ๋Š” ์ด๋ฆ„์˜ ๋ฉ”์„œ๋“œ ๋˜๋Š” ํ•จ์ˆ˜๊ฐ€ ์žˆ๋Š”์ง€ ์ฐพ๋Š”๋‹ค.)
SPREADSHEETCELL์— ๋ง์…ˆ ๊ธฐ๋Šฅ ๊ตฌํ˜„
operator+ ๋ฉ”์„œ๋“œ๋ฅผ ์ •์˜ํ•ด ๋‘๋ฉด ์…€๋ฟ๋งŒ ์•„๋‹ˆ๋ผ string, double, int ํƒ€์ž… ๋ฐ์ดํ„ฐ๋„ ๋ง์…ˆ์„ ํ•  ์ˆ˜ ์žˆ๊ฒŒ ๋œ๋‹ค.
๊ทธ ์ด์œ ๋Š” ์ปดํŒŒ์ผ๋Ÿฌ๊ฐ€ operator+๋ฅผ ์ฒ˜๋ฆฌํ•  ๋•Œ ์ ํ•ฉํ•œ ํƒ€์ž…์œผ๋กœ ๋ณ€ํ™˜ํ•  ๋ฐฉ๋ฒ•์ด ์žˆ๋Š”์ง€๋„ ์ฐพ๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค.
๋งŒ์•ฝ ์ƒ์„ฑ์ž ์ค‘์— ๋ถ€์ ํ•ฉํ•œ ํƒ€์ž…์„ ์ธ์ž๋กœ ๋ฐ›๋Š” ๊ฒƒ์ด ์žˆ๋‹ค๋ฉด
๊ทธ ์ƒ์„ฑ์ž๋ฅผ ์ด์šฉํ•ด ์ ํ•ฉํ•œ ํƒ€์ž…์˜ ์ž„์‹œ ๊ฐ์ฒด๋ฅผ ์ž๋™์œผ๋กœ ์ƒ์„ฑํ•œ๋‹ค.
SpreadsheetCell์— string ํƒ€์ž… ํŒŒ๋ผ๋ฏธํ„ฐ๋ฅผ ๋ฐ›๋Š” ์ƒ์„ฑ์ž๊ฐ€ ์žˆ๋Š” ๊ฒƒ์„ ๋ฐœ๊ฒฌํ•˜๊ณ 
SpreadsheetCell์˜ ์ž„์‹œ ๊ฐ์ฒด๋ฅผ ๋งŒ๋“ค์–ด operator+์„ ์‹คํ–‰ํ•œ๋‹ค.
SpreadsheetCell์— double ํƒ€์ž… ํŒŒ๋ผ๋ฏธํ„ฐ๋ฅผ ๋ฐ›๋Š” ์ƒ์„ฑ์ž๊ฐ€ ์žˆ๋Š” ๊ฒƒ์„ ๋ฐœ๊ฒฌํ•˜๊ณ 
SpreadsheetCell์˜ ์ž„์‹œ ๊ฐ์ฒด๋ฅผ ๋งŒ๋“ค์–ด operator+์„ ์‹คํ–‰ํ•œ๋‹ค.
int๋ฅผ double๋กœ ๋ณ€ํ™˜
SPREADSHEETCELL์— ๋ง์…ˆ ๊ธฐ๋Šฅ ๊ตฌํ˜„
3. ์ „์—ญ ํ•จ์ˆ˜๋กœ์„œ์˜ operator+
๋ฌต์‹œ์ ์ธ ๋ณ€ํ™˜์€ ์—ฐ์‚ฐ์ž์˜ ์ขŒํ•ญ์ด SpreadsheetCell ๊ฐ์ฒด์ธ ๊ฒฝ์šฐ์—๋งŒ
๋™์ž‘ํ•˜๊ณ  ์šฐํ•ญ์— ์œ„์น˜ํ•˜๋ฉด ๋™์ž‘ํ•˜์ง€ ์•Š๋Š”๋‹ค.
๋ง์…ˆ์€ ์ธ์ž์˜ ์ขŒ์šฐ ์œ„์น˜์™€ ๊ด€๊ณ„์—†์–ด์•ผ ํ•˜๋ฏ€๋กœ ๋ถ„๋ช… ๋ฌด์–ธ๊ฐ€ ์ž˜๋ชป๋˜์—ˆ๋‹ค.
๋ฌธ์ œ๋Š” SpreadsheetCell์˜ ๋ฉ”์„œ๋“œ๋กœ์„œ operator+๋ฅผ ์ •์˜ํ•˜๋ฉด
๊ฐ์ฒด์˜ ์šฐํ•ญ์— ์žˆ์„ ๋•Œ๋งŒ operator+๊ฐ€ ํ˜ธ์ถœ๋œ๋‹ค๋Š”๋ฐ ์žˆ๋‹ค.
ํ•˜์ง€๋งŒ ์ „์—ญ ํ•จ์ˆ˜๋กœ์„œ operator+๋ฅผ ์ •์˜ํ•˜์—ฌ
ํŠน์ • ๊ฐ์ฒด์— ์ข…์†๋˜์ง€ ์•Š๋„๋ก ํ•˜๋ฉด ๋ฌธ์ œ๊ฐ€ ํ•ด๊ฒฐ๋œ๋‹ค.
SPREADSHEETCELL์— ๋ง์…ˆ ๊ธฐ๋Šฅ ๊ตฌํ˜„
์ „์—ญ ํ•จ์ˆ˜ operator+๋Š” SpreadsheetCell ํด๋ž˜์Šค์˜ protected ๋ฉค๋ฒ„์— ์ ‘๊ทผํ•ด์•ผ ํ•˜๊ธฐ ๋•Œ๋ฌธ์— friend๋กœ ์„ ์–ธ๋˜์–ด์•ผ ํ•œ๋‹ค.
SPREADSHEETCELL์— ๋ง์…ˆ ๊ธฐ๋Šฅ ๊ตฌํ˜„
์œ„ ์ฝ”๋“œ๋Š” ๋ฌธ์ œ์—†์ด ์ปดํŒŒ์ผ๋˜๊ณ  ์‹คํ–‰๋„ ๋œ๋‹ค. ๊ทธ๋Ÿฐ๋ฐ operator+ ํ•จ์ˆ˜๊ฐ€ ํ˜ธ์ถœ๋˜์ง€ ์•Š๋Š”๋‹ค.
์œ„ ์ฝ”๋“œ๋Š” 4.5์™€ 5.5์— ๋Œ€ํ•ด ๋ณดํ†ต์˜ double ํƒ€์ž… ๋ง์…ˆ์„ ๋จผ์ € ์ˆ˜ํ–‰ํ•˜์—ฌ ๊ฒฐ๊ณผ์ ์œผ๋กœ 10์ด ๋œ๋‹ค.
๊ทธ ๋’ค ์ปดํŒŒ์ผ๋Ÿฌ๋Š” double ํƒ€์ž… ํŒŒ๋ผ๋ฏธํ„ฐ๋ฅผ ๋ฐ›๋Š” ์ƒ์„ฑ์ž๋ฅผ ๋ฐœ๊ฒฌํ•˜๊ณ  ๋ฌต์‹œ์ ์ธ ๋ณ€ํ™˜์„ ์ˆ˜ํ–‰ํ•˜์—ฌ
SpreadsheetCell์˜ ์ž„์‹œ ๊ฐ์ฒด๋ฅผ ์ƒ์„ฑํ•œ ๋‹ค์Œ ๋Œ€์ž… ์—ฐ์‚ฐ์ž๋ฅผ ํ˜ธ์ถœํ•œ๋‹ค.
์‚ฐ์ˆ  ์—ฐ์‚ฐ์ž์˜ ์˜ค๋ฒ„๋กœ๋”ฉ
C++์—์„œ๋Š” ์˜ค๋ฒ„๋กœ๋”ฉ๋œ ์—ฐ์‚ฐ์ž๊ฐ€ ์ผ๋ฐ˜ ์ƒ์‹์— ์–ด๊ธ‹๋‚˜๋Š”์ง€ ์–ด๋–ค์ง€ ๊ฒ€์‚ฌํ•˜์ง€ ์•Š๋Š”๋‹ค.
๋”ฐ๋ผ์„œ ๊ฐ ์—ฐ์‚ฐ ๊ธฐํ˜ธ๊ฐ€ ๊ฐ€์ง„ ์ผ๋ฐ˜์ ์ธ ์˜๋ฏธ์—์„œ ๊ทธ ๊ธฐ๋Šฅ์„ ์‰ฝ๊ฒŒ ์œ ์ถ”ํ•  ์ˆ˜ ์žˆ๋„๋ก ๊ตฌํ˜„ํ•˜๋Š” ๊ฒƒ์ด ๋ฐ”๋žŒ์งํ•˜๋‹ค.
๋˜ํ•œ C++์—์„œ๋Š” ์—ฐ์‚ฐ์ž์˜ ์šฐ์„ ์ˆœ์œ„๋ฅผ ๋ฐ”๊ฟ€ ์ˆ˜ ์—†๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด *๊ณผ /๋Š” +, -๋ณด๋‹ค ์šฐ์„ ํ•ด์„œ ์‹คํ–‰๋œ๋‹ค.
0์œผ๋กœ ๋‚˜๋ˆ„๊ธฐ๋ฅผ ๋ฐฉ์ง€ํ•˜๋Š” ๋ถ€๋ถ„.
๋งŒ์•ฝ 0์œผ๋กœ ๋‚˜๋ˆ„๋ ค ํ•˜๋ฉด ์ต์…‰์…˜์„ ๋ฐœ์ƒ์‹œํ‚จ๋‹ค.
์‚ฐ์ˆ  ์—ฐ์‚ฐ์ž์˜ ์˜ค๋ฒ„๋กœ๋”ฉ
์ถ•์•ฝํ˜• ์‚ฐ์ˆ  ์—ฐ์‚ฐ์ž์˜ ์˜ค๋ฒ„๋กœ๋”ฉ์€ ๊ธฐ๋ณธ ์—ฐ์‚ฐ์ž์˜ ์˜ค๋ฒ„๋กœ๋”ฉ๊ณผ ๋‘ ๊ฐ€์ง€ ๋ฉด์—์„œ ๋‹ค๋ฅด๋‹ค.
์ฒซ ๋ฒˆ์งธ ์ฐจ์ด์ ์€, ์ž„์‹œ ๊ฐ์ฒด๋ฅผ ๋งŒ๋“ค์ง€ ์•Š๊ณ  ์ขŒํ•ญ ๊ฐ์ฒด๋ฅผ ๋ณ€๊ฒฝํ•œ๋‹ค๋Š” ์ ์ด๋‹ค.
๋‘ ๋ฒˆ์งธ ์ฐจ์ด์ ์€, ๋ณ€๊ฒฝ๋œ ๊ฐ์ฒด์— ๋Œ€ํ•œ ์ฐธ์กฐ ํƒ€์ž…์„ ๊ฒฐ๊ณผ ๋ฆฌํ„ด ๊ฐ’์œผ๋กœ ์ƒ์„ฑํ•œ๋‹ค๋Š” ์ ์ด๋‹ค.
0์œผ๋กœ ๋‚˜๋ˆ„๊ธฐ๋ฅผ ๋ฐฉ์ง€ํ•˜๋Š” ๋ถ€๋ถ„.
๋งŒ์•ฝ 0์œผ๋กœ ๋‚˜๋ˆ„๋ ค ํ•˜๋ฉด ์ต์…‰์…˜์„ ๋ฐœ์ƒ์‹œํ‚จ๋‹ค.
๋น„๊ต ์—ฐ์‚ฐ์ž์˜ ์˜ค๋ฒ„๋กœ๋”ฉ
>, <, ==๊ณผ ๊ฐ™์€ ๋น„๊ต ์—ฐ์‚ฐ์ž๋„ ๊ฐ์ฒด๊ฐ„ ์ž‘์—…์— ํ™œ์šฉํ•˜๊ธฐ ์ข‹์€ ์—ฐ์‚ฐ์ž๋“ค์ด๋‹ค.
๊ธฐ๋ณธ ์‚ฐ์ˆ  ์—ฐ์‚ฐ์ž์—์„œ์™€ ๋งˆ์ฐฌ๊ฐ€์ง€๋กœ ์ด๋“ค ์—ฐ์‚ฐ์ž๋„ ์ „์—ญ ํ•จ์ˆ˜๋กœ ๋งŒ๋“ค์–ด
์ขŒํ•ญ๊ณผ ์šฐํ•ญ ์–ด๋Š ์ชฝ ๊ฐ’์ด๋“  ๋ฌต์‹œ์ ์ธ ๋ณ€ํ™˜์„ ํ•  ์ˆ˜ ์žˆ๋„๋ก ํ•œ๋‹ค.
์•ˆ์ •๋œ ์ธํ„ฐํŽ˜์ด์Šค ๋งŒ๋“ค๊ธฐ
์ธํ„ฐํŽ˜์ด์Šค ํด๋ž˜์Šค์™€ ๊ตฌํ˜„ ํด๋ž˜์Šค์˜ ํ™œ์šฉ
์ธํ„ฐํŽ˜์ด์Šค ํด๋ž˜์Šค์™€ ๊ตฌํ˜„ ํด๋ž˜์Šค์˜ ํ™œ์šฉ
ํด๋ž˜์Šค๋ฅผ ๋””์ž์ธํ•  ๋•Œ๋Š” ์ถ”์ƒํ™” ์›์น™์„ ์ ์šฉํ•˜์—ฌ ๊ตฌํ˜„๊ณผ ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ๋ถ„๋ฆฌํ•ด์•ผ ํ•œ๋‹ค.
๊ตฌ์ฒด์ ์œผ๋กœ๋Š” ๋ชจ๋“  ๋ฐ์ดํ„ฐ ๋ฉค๋ฒ„๋“ค์„ protected๋‚˜ private๋กœ ์„ ์–ธํ•˜๊ณ 
์™ธ๋ถ€์—์„œ ๋ฉค๋ฒ„๋“ค์„ ์ ‘๊ทผํ•  ํ•„์š”๊ฐ€ ์žˆ์„ ๋•Œ๋Š” get/set ๋ฉ”์„œ๋“œ๋ฅผ ์ด์šฉํ•œ๋‹ค.
ํ•˜์ง€๋งŒ ํด๋ž˜์Šค ์ •์˜ ๋ฌธ๋ฒ•์€ public ์ธํ„ฐํŽ˜์ด์Šค์™€ private ๋ฐ์ดํ„ฐ ๋ฉค๋ฒ„ ๋ฐ ๋ฉ”์„œ๋“œ๋ฅผ
ํ•œ ํด๋ž˜์Šค์—์„œ ์ •์˜ํ•˜๋„๋ก ํ•˜๊ณ  ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ๋‚ด๋ถ€ ๊ตฌํ˜„์ด ์‚ฌ์šฉ์ž์—๊ฒŒ ๋…ธ์ถœ๋œ๋‹ค.
์ธํ„ฐํŽ˜์ด์Šค ํด๋ž˜์Šค์™€ ๊ตฌํ˜„ ํด๋ž˜์Šค์˜ ํ™œ์šฉ
ํ•ด๊ฒฐ ๋ฐฉ๋ฒ•์€ ํด๋ž˜์Šค๋ฅผ ๋งŒ๋“ค ๋•Œ๋งˆ๋‹ค ๋งค๋ฒˆ ์ธํ„ฐํŽ˜์ด์Šค ํด๋ž˜์Šค์™€ ๊ตฌํ˜„ ํด๋ž˜์Šค๋ฅผ ๋‘ ๊ฐœ์”ฉ ๋งŒ๋“œ๋Š” ๊ฒƒ์ด๋‹ค.
๊ตฌํ˜„ ํด๋ž˜์Šค๋Š” ์›๋ž˜ ๋งŒ๋“ค๋˜ ๋ฐฉ์‹์˜ ํด๋ž˜์Šค์™€ ๊ฐ™๋‹ค. ์ธํ„ฐํŽ˜์ด์Šค ํด๋ž˜์Šค๋Š” ๊ตฌํ˜„ ํด๋ž˜์Šค์˜ public ๋ฉ”์„œ๋“œ๋งŒ์„ ๋‹ด๋Š”๋‹ค.
์ด๋ ‡๊ฒŒ ํด๋ž˜์Šค๋ฅผ ๋ถ„๋ฆฌํ•˜๋ฉด ๊ตฌํ˜„ ํด๋ž˜์Šค๊ฐ€ ์–ด๋–ป๊ฒŒ ๋ฐ”๋€Œ๋“  public ์ธํ„ฐํŽ˜์ด์Šค ํด๋ž˜์Šค์—๋Š” ๋ณ€ํ™”๊ฐ€ ์—†์œผ๋ฏ€๋กœ
์ปดํŒŒ์ผ์„ ๋‹ค์‹œ ํ•ด์•ผ ํ•  ํ•„์š”๋ฅผ ์ค„์ผ ์ˆ˜ ์žˆ๋‹ค.
๋จผ์ € ๊ธฐ์กด์˜ Spreadsheet ํด๋ž˜์Šค ์ด๋ฆ„์„ SpreadsheetImpl๋กœ ๋ฐ”๊พผ๋‹ค.
๊ทธ๋ฆฌ๊ณ  ์ƒˆ๋กœ์šด Spreadsheet ํด๋ž˜์Šค๋ฅผ ์ •์˜ํ•œ๋‹ค.
ํ•œ ๊ฐ€์ง€ ๋‹ค๋ฅธ ์ ์€ Spreadsheet ์ƒ์„ฑ์ž๋กœ ์ดˆ๊ธฐํ™”ํ•  const ๋ฉค๋ฒ„๊ฐ€
์—†์–ด์กŒ๊ธฐ ๋•Œ๋ฌธ์— ๋””ํดํŠธ ํŒŒ๋ผ๋ฏธํ„ฐ๋ฅผ ์„ค์ •ํ•  ์ˆ˜ ์—†์–ด ์ƒ์„ฑ์ž๊ฐ€ ๋‘ ๊ฐœ๋กœ ๋‚˜๋‰˜์—ˆ๋‹ค.
๋Œ€์‹  SpreadsheetImpl ํด๋ž˜์Šค์—์„œ ํ•ด๋‹น ๋””ํดํŠธ ๊ฐ’์„ ์„ค์ •ํ•œ๋‹ค.
์ธํ„ฐํŽ˜์ด์Šค ํด๋ž˜์Šค์™€ ๊ตฌํ˜„ ํด๋ž˜์Šค์˜ ํ™œ์šฉ
Spreadsheet ๋ฉ”์„œ๋“œ์˜ ๊ตฌํ˜„๋ถ€๋Š” ๋‹จ์ง€ SpreadsheetImpl ๊ฐ์ฒด์˜ ํ•ด๋‹น ๋ฉ”์„œ๋“œ ํ˜ธ์ถœ์„ ์ค‘๊ณ„ํ•ด์ค€๋‹ค.
์ด๋Ÿฌํ•œ ํ…Œํฌ๋‹‰์€ ์ธํ„ฐํŽ˜์ด์Šค์™€ ๊ตฌํ˜„์„ ์™„์ „ํ•˜๊ฒŒ ๋ถ„๋ฆฌํ•ด์ฃผ๋ฉฐ ์ปดํŒŒ์ผ ์‹œ๊ฐ„์„ ๋‹จ์ถ•ํ•ด์ฃผ๊ธฐ ๋•Œ๋ฌธ์— ๋งค์šฐ ๊ฐ•๋ ฅํ•˜๋‹ค.
๋” ๋‚˜์•„๊ฐ€์„œ ํ”„๋ฆฌ์ปดํŒŒ์ผ๋œ ํ—ค๋”(Pre-Compiled Header)๋ฅผ ์ด์šฉํ•ด ๊ธฐ๋ณธ์ ์ธ ๋นŒ๋“œ ์‹œ๊ฐ„ ์ž์ฒด๋ฅผ ์ค„์ผ ์ˆ˜๋„ ์žˆ๋‹ค.

Mais conteรบdo relacionado

Mais procurados

python data model ์ดํ•ดํ•˜๊ธฐ
python data model ์ดํ•ดํ•˜๊ธฐpython data model ์ดํ•ดํ•˜๊ธฐ
python data model ์ดํ•ดํ•˜๊ธฐYong Joon Moon
ย 
แ„‘แ…กแ„‹แ…ตแ„Šแ…ฅแ†ซ+แ„Œแ…ฎแ„‹แ…ญ+แ„‹แ…ญแ†ผแ„‹แ…ฅ+แ„Œแ…ฅแ†ผแ„…แ…ต 20160304
แ„‘แ…กแ„‹แ…ตแ„Šแ…ฅแ†ซ+แ„Œแ…ฎแ„‹แ…ญ+แ„‹แ…ญแ†ผแ„‹แ…ฅ+แ„Œแ…ฅแ†ผแ„…แ…ต 20160304แ„‘แ…กแ„‹แ…ตแ„Šแ…ฅแ†ซ+แ„Œแ…ฎแ„‹แ…ญ+แ„‹แ…ญแ†ผแ„‹แ…ฅ+แ„Œแ…ฅแ†ผแ„…แ…ต 20160304
แ„‘แ…กแ„‹แ…ตแ„Šแ…ฅแ†ซ+แ„Œแ…ฎแ„‹แ…ญ+แ„‹แ…ญแ†ผแ„‹แ…ฅ+แ„Œแ…ฅแ†ผแ„…แ…ต 20160304Yong Joon Moon
ย 
ํŒŒ์ด์ฌ ์‹ฌํ™”
ํŒŒ์ด์ฌ ์‹ฌํ™”ํŒŒ์ด์ฌ ์‹ฌํ™”
ํŒŒ์ด์ฌ ์‹ฌํ™”Yong Joon Moon
ย 
แ„‘แ…กแ„‹แ…ตแ„Šแ…ฅแ†ซ ๊ธฐ์ดˆ
แ„‘แ…กแ„‹แ…ตแ„Šแ…ฅแ†ซ ๊ธฐ์ดˆ แ„‘แ…กแ„‹แ…ตแ„Šแ…ฅแ†ซ ๊ธฐ์ดˆ
แ„‘แ…กแ„‹แ…ตแ„Šแ…ฅแ†ซ ๊ธฐ์ดˆ Yong Joon Moon
ย 
ํŒŒ์ด์ฌ iterator generator ์ดํ•ดํ•˜๊ธฐ
ํŒŒ์ด์ฌ iterator generator ์ดํ•ดํ•˜๊ธฐํŒŒ์ด์ฌ iterator generator ์ดํ•ดํ•˜๊ธฐ
ํŒŒ์ด์ฌ iterator generator ์ดํ•ดํ•˜๊ธฐYong Joon Moon
ย 
ํŒŒ์ด์ฌ ๋ฐ์ดํ„ฐ ๊ฒ€์ƒ‰
ํŒŒ์ด์ฌ ๋ฐ์ดํ„ฐ ๊ฒ€์ƒ‰ํŒŒ์ด์ฌ ๋ฐ์ดํ„ฐ ๊ฒ€์ƒ‰
ํŒŒ์ด์ฌ ๋ฐ์ดํ„ฐ ๊ฒ€์ƒ‰Yong Joon Moon
ย 
Python ์ดํ•ดํ•˜๊ธฐ 20160815
Python ์ดํ•ดํ•˜๊ธฐ 20160815Python ์ดํ•ดํ•˜๊ธฐ 20160815
Python ์ดํ•ดํ•˜๊ธฐ 20160815Yong Joon Moon
ย 
แ„‘แ…กแ„‹แ…ตแ„Šแ…ฅแ†ซ แ„‘แ…ณแ†ฏแ„…แ…กแ„‰แ…ณแ„แ…ณ แ„‹แ…ตแ„’แ…ขแ„’แ…กแ„€แ…ต
แ„‘แ…กแ„‹แ…ตแ„Šแ…ฅแ†ซ แ„‘แ…ณแ†ฏแ„…แ…กแ„‰แ…ณแ„แ…ณ แ„‹แ…ตแ„’แ…ขแ„’แ…กแ„€แ…ต แ„‘แ…กแ„‹แ…ตแ„Šแ…ฅแ†ซ แ„‘แ…ณแ†ฏแ„…แ…กแ„‰แ…ณแ„แ…ณ แ„‹แ…ตแ„’แ…ขแ„’แ…กแ„€แ…ต
แ„‘แ…กแ„‹แ…ตแ„Šแ…ฅแ†ซ แ„‘แ…ณแ†ฏแ„…แ…กแ„‰แ…ณแ„แ…ณ แ„‹แ…ตแ„’แ…ขแ„’แ…กแ„€แ…ต Yong Joon Moon
ย 
แ„‘แ…กแ„‹แ…ตแ„Šแ…ฅแ†ซ class ๋ฐ function namespace ์ดํ•ดํ•˜๊ธฐ
แ„‘แ…กแ„‹แ…ตแ„Šแ…ฅแ†ซ class ๋ฐ function namespace ์ดํ•ดํ•˜๊ธฐแ„‘แ…กแ„‹แ…ตแ„Šแ…ฅแ†ซ class ๋ฐ function namespace ์ดํ•ดํ•˜๊ธฐ
แ„‘แ…กแ„‹แ…ตแ„Šแ…ฅแ†ซ class ๋ฐ function namespace ์ดํ•ดํ•˜๊ธฐYong Joon Moon
ย 
แ„‘แ…กแ„‹แ…ตแ„Šแ…ฅแ†ซ แ„’แ…กแ†ทแ„‰แ…ฎ แ„‹แ…ตแ„’แ…ขแ„’แ…กแ„€แ…ต
แ„‘แ…กแ„‹แ…ตแ„Šแ…ฅแ†ซ แ„’แ…กแ†ทแ„‰แ…ฎ แ„‹แ…ตแ„’แ…ขแ„’แ…กแ„€แ…ต แ„‘แ…กแ„‹แ…ตแ„Šแ…ฅแ†ซ แ„’แ…กแ†ทแ„‰แ…ฎ แ„‹แ…ตแ„’แ…ขแ„’แ…กแ„€แ…ต
แ„‘แ…กแ„‹แ…ตแ„Šแ…ฅแ†ซ แ„’แ…กแ†ทแ„‰แ…ฎ แ„‹แ…ตแ„’แ…ขแ„’แ…กแ„€แ…ต Yong Joon Moon
ย 
Reflect package แ„‰แ…กแ„‹แ…ญแ†ผแ„’แ…กแ„€แ…ต
Reflect package แ„‰แ…กแ„‹แ…ญแ†ผแ„’แ…กแ„€แ…ตReflect package แ„‰แ…กแ„‹แ…ญแ†ผแ„’แ…กแ„€แ…ต
Reflect package แ„‰แ…กแ„‹แ…ญแ†ผแ„’แ…กแ„€แ…ตYong Joon Moon
ย 
แ„‘แ…กแ„‹แ…ตแ„Šแ…ฅแ†ซ Special method แ„‹แ…ตแ„’แ…ขแ„’แ…กแ„€แ…ต
แ„‘แ…กแ„‹แ…ตแ„Šแ…ฅแ†ซ Special method แ„‹แ…ตแ„’แ…ขแ„’แ…กแ„€แ…ตแ„‘แ…กแ„‹แ…ตแ„Šแ…ฅแ†ซ Special method แ„‹แ…ตแ„’แ…ขแ„’แ…กแ„€แ…ต
แ„‘แ…กแ„‹แ…ตแ„Šแ…ฅแ†ซ Special method แ„‹แ…ตแ„’แ…ขแ„’แ…กแ„€แ…ตYong Joon Moon
ย 
Jupyter notebook ์ดํ•ดํ•˜๊ธฐ
Jupyter notebook ์ดํ•ดํ•˜๊ธฐ Jupyter notebook ์ดํ•ดํ•˜๊ธฐ
Jupyter notebook ์ดํ•ดํ•˜๊ธฐ Yong Joon Moon
ย 
C++20์—์„œ ๋ฆฌํ”Œ๋ ‰์…˜ ๊ธฐ๋Šฅ ๊ตฌํ˜„
C++20์—์„œ ๋ฆฌํ”Œ๋ ‰์…˜ ๊ธฐ๋Šฅ ๊ตฌํ˜„C++20์—์„œ ๋ฆฌํ”Œ๋ ‰์…˜ ๊ธฐ๋Šฅ ๊ตฌํ˜„
C++20์—์„œ ๋ฆฌํ”Œ๋ ‰์…˜ ๊ธฐ๋Šฅ ๊ตฌํ˜„Bongseok Cho
ย 
8.๋‹ค์ค‘๋ฉ”์„œ๋“œ
8.๋‹ค์ค‘๋ฉ”์„œ๋“œ8.๋‹ค์ค‘๋ฉ”์„œ๋“œ
8.๋‹ค์ค‘๋ฉ”์„œ๋“œKwang Jung Kim
ย 
แ„‘แ…กแ„‹แ…ตแ„Šแ…ฅแ†ซ แ„‚แ…ขแ„‡แ…ฎ แ„ƒแ…ฆแ„‹แ…ตแ„แ…ฅ แ„€แ…ฅแ†ทแ„‰แ…ขแ†จ แ„‡แ…กแ†ผแ„‡แ…ฅแ†ธ
แ„‘แ…กแ„‹แ…ตแ„Šแ…ฅแ†ซ แ„‚แ…ขแ„‡แ…ฎ แ„ƒแ…ฆแ„‹แ…ตแ„แ…ฅ แ„€แ…ฅแ†ทแ„‰แ…ขแ†จ แ„‡แ…กแ†ผแ„‡แ…ฅแ†ธแ„‘แ…กแ„‹แ…ตแ„Šแ…ฅแ†ซ แ„‚แ…ขแ„‡แ…ฎ แ„ƒแ…ฆแ„‹แ…ตแ„แ…ฅ แ„€แ…ฅแ†ทแ„‰แ…ขแ†จ แ„‡แ…กแ†ผแ„‡แ…ฅแ†ธ
แ„‘แ…กแ„‹แ…ตแ„Šแ…ฅแ†ซ แ„‚แ…ขแ„‡แ…ฎ แ„ƒแ…ฆแ„‹แ…ตแ„แ…ฅ แ„€แ…ฅแ†ทแ„‰แ…ขแ†จ แ„‡แ…กแ†ผแ„‡แ…ฅแ†ธYong Joon Moon
ย 
Scala dir processing
Scala dir processingScala dir processing
Scala dir processingYong Joon Moon
ย 

Mais procurados (20)

python data model ์ดํ•ดํ•˜๊ธฐ
python data model ์ดํ•ดํ•˜๊ธฐpython data model ์ดํ•ดํ•˜๊ธฐ
python data model ์ดํ•ดํ•˜๊ธฐ
ย 
แ„‘แ…กแ„‹แ…ตแ„Šแ…ฅแ†ซ+แ„Œแ…ฎแ„‹แ…ญ+แ„‹แ…ญแ†ผแ„‹แ…ฅ+แ„Œแ…ฅแ†ผแ„…แ…ต 20160304
แ„‘แ…กแ„‹แ…ตแ„Šแ…ฅแ†ซ+แ„Œแ…ฎแ„‹แ…ญ+แ„‹แ…ญแ†ผแ„‹แ…ฅ+แ„Œแ…ฅแ†ผแ„…แ…ต 20160304แ„‘แ…กแ„‹แ…ตแ„Šแ…ฅแ†ซ+แ„Œแ…ฎแ„‹แ…ญ+แ„‹แ…ญแ†ผแ„‹แ…ฅ+แ„Œแ…ฅแ†ผแ„…แ…ต 20160304
แ„‘แ…กแ„‹แ…ตแ„Šแ…ฅแ†ซ+แ„Œแ…ฎแ„‹แ…ญ+แ„‹แ…ญแ†ผแ„‹แ…ฅ+แ„Œแ…ฅแ†ผแ„…แ…ต 20160304
ย 
ํŒŒ์ด์ฌ ์‹ฌํ™”
ํŒŒ์ด์ฌ ์‹ฌํ™”ํŒŒ์ด์ฌ ์‹ฌํ™”
ํŒŒ์ด์ฌ ์‹ฌํ™”
ย 
แ„‘แ…กแ„‹แ…ตแ„Šแ…ฅแ†ซ ๊ธฐ์ดˆ
แ„‘แ…กแ„‹แ…ตแ„Šแ…ฅแ†ซ ๊ธฐ์ดˆ แ„‘แ…กแ„‹แ…ตแ„Šแ…ฅแ†ซ ๊ธฐ์ดˆ
แ„‘แ…กแ„‹แ…ตแ„Šแ…ฅแ†ซ ๊ธฐ์ดˆ
ย 
ํŒŒ์ด์ฌ iterator generator ์ดํ•ดํ•˜๊ธฐ
ํŒŒ์ด์ฌ iterator generator ์ดํ•ดํ•˜๊ธฐํŒŒ์ด์ฌ iterator generator ์ดํ•ดํ•˜๊ธฐ
ํŒŒ์ด์ฌ iterator generator ์ดํ•ดํ•˜๊ธฐ
ย 
ํŒŒ์ด์ฌ ๋ฐ์ดํ„ฐ ๊ฒ€์ƒ‰
ํŒŒ์ด์ฌ ๋ฐ์ดํ„ฐ ๊ฒ€์ƒ‰ํŒŒ์ด์ฌ ๋ฐ์ดํ„ฐ ๊ฒ€์ƒ‰
ํŒŒ์ด์ฌ ๋ฐ์ดํ„ฐ ๊ฒ€์ƒ‰
ย 
Python ์ดํ•ดํ•˜๊ธฐ 20160815
Python ์ดํ•ดํ•˜๊ธฐ 20160815Python ์ดํ•ดํ•˜๊ธฐ 20160815
Python ์ดํ•ดํ•˜๊ธฐ 20160815
ย 
Effective c++ Chapter1,2
Effective c++ Chapter1,2Effective c++ Chapter1,2
Effective c++ Chapter1,2
ย 
แ„‘แ…กแ„‹แ…ตแ„Šแ…ฅแ†ซ แ„‘แ…ณแ†ฏแ„…แ…กแ„‰แ…ณแ„แ…ณ แ„‹แ…ตแ„’แ…ขแ„’แ…กแ„€แ…ต
แ„‘แ…กแ„‹แ…ตแ„Šแ…ฅแ†ซ แ„‘แ…ณแ†ฏแ„…แ…กแ„‰แ…ณแ„แ…ณ แ„‹แ…ตแ„’แ…ขแ„’แ…กแ„€แ…ต แ„‘แ…กแ„‹แ…ตแ„Šแ…ฅแ†ซ แ„‘แ…ณแ†ฏแ„…แ…กแ„‰แ…ณแ„แ…ณ แ„‹แ…ตแ„’แ…ขแ„’แ…กแ„€แ…ต
แ„‘แ…กแ„‹แ…ตแ„Šแ…ฅแ†ซ แ„‘แ…ณแ†ฏแ„…แ…กแ„‰แ…ณแ„แ…ณ แ„‹แ…ตแ„’แ…ขแ„’แ…กแ„€แ…ต
ย 
Effective c++chapter3
Effective c++chapter3Effective c++chapter3
Effective c++chapter3
ย 
แ„‘แ…กแ„‹แ…ตแ„Šแ…ฅแ†ซ class ๋ฐ function namespace ์ดํ•ดํ•˜๊ธฐ
แ„‘แ…กแ„‹แ…ตแ„Šแ…ฅแ†ซ class ๋ฐ function namespace ์ดํ•ดํ•˜๊ธฐแ„‘แ…กแ„‹แ…ตแ„Šแ…ฅแ†ซ class ๋ฐ function namespace ์ดํ•ดํ•˜๊ธฐ
แ„‘แ…กแ„‹แ…ตแ„Šแ…ฅแ†ซ class ๋ฐ function namespace ์ดํ•ดํ•˜๊ธฐ
ย 
แ„‘แ…กแ„‹แ…ตแ„Šแ…ฅแ†ซ แ„’แ…กแ†ทแ„‰แ…ฎ แ„‹แ…ตแ„’แ…ขแ„’แ…กแ„€แ…ต
แ„‘แ…กแ„‹แ…ตแ„Šแ…ฅแ†ซ แ„’แ…กแ†ทแ„‰แ…ฎ แ„‹แ…ตแ„’แ…ขแ„’แ…กแ„€แ…ต แ„‘แ…กแ„‹แ…ตแ„Šแ…ฅแ†ซ แ„’แ…กแ†ทแ„‰แ…ฎ แ„‹แ…ตแ„’แ…ขแ„’แ…กแ„€แ…ต
แ„‘แ…กแ„‹แ…ตแ„Šแ…ฅแ†ซ แ„’แ…กแ†ทแ„‰แ…ฎ แ„‹แ…ตแ„’แ…ขแ„’แ…กแ„€แ…ต
ย 
Reflect package แ„‰แ…กแ„‹แ…ญแ†ผแ„’แ…กแ„€แ…ต
Reflect package แ„‰แ…กแ„‹แ…ญแ†ผแ„’แ…กแ„€แ…ตReflect package แ„‰แ…กแ„‹แ…ญแ†ผแ„’แ…กแ„€แ…ต
Reflect package แ„‰แ…กแ„‹แ…ญแ†ผแ„’แ…กแ„€แ…ต
ย 
Effective c++chapter8
Effective c++chapter8Effective c++chapter8
Effective c++chapter8
ย 
แ„‘แ…กแ„‹แ…ตแ„Šแ…ฅแ†ซ Special method แ„‹แ…ตแ„’แ…ขแ„’แ…กแ„€แ…ต
แ„‘แ…กแ„‹แ…ตแ„Šแ…ฅแ†ซ Special method แ„‹แ…ตแ„’แ…ขแ„’แ…กแ„€แ…ตแ„‘แ…กแ„‹แ…ตแ„Šแ…ฅแ†ซ Special method แ„‹แ…ตแ„’แ…ขแ„’แ…กแ„€แ…ต
แ„‘แ…กแ„‹แ…ตแ„Šแ…ฅแ†ซ Special method แ„‹แ…ตแ„’แ…ขแ„’แ…กแ„€แ…ต
ย 
Jupyter notebook ์ดํ•ดํ•˜๊ธฐ
Jupyter notebook ์ดํ•ดํ•˜๊ธฐ Jupyter notebook ์ดํ•ดํ•˜๊ธฐ
Jupyter notebook ์ดํ•ดํ•˜๊ธฐ
ย 
C++20์—์„œ ๋ฆฌํ”Œ๋ ‰์…˜ ๊ธฐ๋Šฅ ๊ตฌํ˜„
C++20์—์„œ ๋ฆฌํ”Œ๋ ‰์…˜ ๊ธฐ๋Šฅ ๊ตฌํ˜„C++20์—์„œ ๋ฆฌํ”Œ๋ ‰์…˜ ๊ธฐ๋Šฅ ๊ตฌํ˜„
C++20์—์„œ ๋ฆฌํ”Œ๋ ‰์…˜ ๊ธฐ๋Šฅ ๊ตฌํ˜„
ย 
8.๋‹ค์ค‘๋ฉ”์„œ๋“œ
8.๋‹ค์ค‘๋ฉ”์„œ๋“œ8.๋‹ค์ค‘๋ฉ”์„œ๋“œ
8.๋‹ค์ค‘๋ฉ”์„œ๋“œ
ย 
แ„‘แ…กแ„‹แ…ตแ„Šแ…ฅแ†ซ แ„‚แ…ขแ„‡แ…ฎ แ„ƒแ…ฆแ„‹แ…ตแ„แ…ฅ แ„€แ…ฅแ†ทแ„‰แ…ขแ†จ แ„‡แ…กแ†ผแ„‡แ…ฅแ†ธ
แ„‘แ…กแ„‹แ…ตแ„Šแ…ฅแ†ซ แ„‚แ…ขแ„‡แ…ฎ แ„ƒแ…ฆแ„‹แ…ตแ„แ…ฅ แ„€แ…ฅแ†ทแ„‰แ…ขแ†จ แ„‡แ…กแ†ผแ„‡แ…ฅแ†ธแ„‘แ…กแ„‹แ…ตแ„Šแ…ฅแ†ซ แ„‚แ…ขแ„‡แ…ฎ แ„ƒแ…ฆแ„‹แ…ตแ„แ…ฅ แ„€แ…ฅแ†ทแ„‰แ…ขแ†จ แ„‡แ…กแ†ผแ„‡แ…ฅแ†ธ
แ„‘แ…กแ„‹แ…ตแ„Šแ…ฅแ†ซ แ„‚แ…ขแ„‡แ…ฎ แ„ƒแ…ฆแ„‹แ…ตแ„แ…ฅ แ„€แ…ฅแ†ทแ„‰แ…ขแ†จ แ„‡แ…กแ†ผแ„‡แ…ฅแ†ธ
ย 
Scala dir processing
Scala dir processingScala dir processing
Scala dir processing
ย 

Destaque

C++ Programming - 3rd Study
C++ Programming - 3rd StudyC++ Programming - 3rd Study
C++ Programming - 3rd StudyChris Ohk
ย 
C++ Programming - 2nd Study
C++ Programming - 2nd StudyC++ Programming - 2nd Study
C++ Programming - 2nd StudyChris Ohk
ย 
C++ Programming - 1st Study
C++ Programming - 1st StudyC++ Programming - 1st Study
C++ Programming - 1st StudyChris Ohk
ย 
2013 C++ Study For Students #1
2013 C++ Study For Students #12013 C++ Study For Students #1
2013 C++ Study For Students #1Chris Ohk
ย 
C++ Programming - 4th Study
C++ Programming - 4th StudyC++ Programming - 4th Study
C++ Programming - 4th StudyChris Ohk
ย 
๊ตญ๋ฏผ๋Œ€ํ•™๊ต ์ปดํ“จํ„ฐํ”„๋กœ๊ทธ๋ž˜๋ฐ
๊ตญ๋ฏผ๋Œ€ํ•™๊ต ์ปดํ“จํ„ฐํ”„๋กœ๊ทธ๋ž˜๋ฐ๊ตญ๋ฏผ๋Œ€ํ•™๊ต ์ปดํ“จํ„ฐํ”„๋กœ๊ทธ๋ž˜๋ฐ
๊ตญ๋ฏผ๋Œ€ํ•™๊ต ์ปดํ“จํ„ฐํ”„๋กœ๊ทธ๋ž˜๋ฐMinsuk Lee
ย 
๊ฒŒ์ž„ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ๊ธฐ์ดˆ ๊ณต๋ถ€๋ฒ•
๊ฒŒ์ž„ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ๊ธฐ์ดˆ ๊ณต๋ถ€๋ฒ•๊ฒŒ์ž„ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ๊ธฐ์ดˆ ๊ณต๋ถ€๋ฒ•
๊ฒŒ์ž„ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ๊ธฐ์ดˆ ๊ณต๋ถ€๋ฒ•Chris Ohk
ย 

Destaque (7)

C++ Programming - 3rd Study
C++ Programming - 3rd StudyC++ Programming - 3rd Study
C++ Programming - 3rd Study
ย 
C++ Programming - 2nd Study
C++ Programming - 2nd StudyC++ Programming - 2nd Study
C++ Programming - 2nd Study
ย 
C++ Programming - 1st Study
C++ Programming - 1st StudyC++ Programming - 1st Study
C++ Programming - 1st Study
ย 
2013 C++ Study For Students #1
2013 C++ Study For Students #12013 C++ Study For Students #1
2013 C++ Study For Students #1
ย 
C++ Programming - 4th Study
C++ Programming - 4th StudyC++ Programming - 4th Study
C++ Programming - 4th Study
ย 
๊ตญ๋ฏผ๋Œ€ํ•™๊ต ์ปดํ“จํ„ฐํ”„๋กœ๊ทธ๋ž˜๋ฐ
๊ตญ๋ฏผ๋Œ€ํ•™๊ต ์ปดํ“จํ„ฐํ”„๋กœ๊ทธ๋ž˜๋ฐ๊ตญ๋ฏผ๋Œ€ํ•™๊ต ์ปดํ“จํ„ฐํ”„๋กœ๊ทธ๋ž˜๋ฐ
๊ตญ๋ฏผ๋Œ€ํ•™๊ต ์ปดํ“จํ„ฐํ”„๋กœ๊ทธ๋ž˜๋ฐ
ย 
๊ฒŒ์ž„ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ๊ธฐ์ดˆ ๊ณต๋ถ€๋ฒ•
๊ฒŒ์ž„ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ๊ธฐ์ดˆ ๊ณต๋ถ€๋ฒ•๊ฒŒ์ž„ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ๊ธฐ์ดˆ ๊ณต๋ถ€๋ฒ•
๊ฒŒ์ž„ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ๊ธฐ์ดˆ ๊ณต๋ถ€๋ฒ•
ย 

Semelhante a 2014-15 Intermediate C++ Study #7

Effective STL 1~4์žฅ ์ •๋ฆฌ
Effective STL 1~4์žฅ ์ •๋ฆฌEffective STL 1~4์žฅ ์ •๋ฆฌ
Effective STL 1~4์žฅ ์ •๋ฆฌShin heemin
ย 
์ดํŽ™ํ‹ฐ๋ธŒ C++ 789 ๊ณต๋ถ€
์ดํŽ™ํ‹ฐ๋ธŒ C++ 789 ๊ณต๋ถ€์ดํŽ™ํ‹ฐ๋ธŒ C++ 789 ๊ณต๋ถ€
์ดํŽ™ํ‹ฐ๋ธŒ C++ 789 ๊ณต๋ถ€quxn6
ย 
[์Šคํ”„๋ง ์Šคํ„ฐ๋”” 1์ผ์ฐจ] ํ…œํ”Œ๋ฆฟ
[์Šคํ”„๋ง ์Šคํ„ฐ๋”” 1์ผ์ฐจ] ํ…œํ”Œ๋ฆฟ[์Šคํ”„๋ง ์Šคํ„ฐ๋”” 1์ผ์ฐจ] ํ…œํ”Œ๋ฆฟ
[์Šคํ”„๋ง ์Šคํ„ฐ๋”” 1์ผ์ฐจ] ํ…œํ”Œ๋ฆฟAnselmKim
ย 
[HaU] ์‹ ์ž… ๊ธฐ์ˆ  ๋ฉด์ ‘ ์ค€๋น„ java
[HaU] ์‹ ์ž… ๊ธฐ์ˆ  ๋ฉด์ ‘ ์ค€๋น„ java[HaU] ์‹ ์ž… ๊ธฐ์ˆ  ๋ฉด์ ‘ ์ค€๋น„ java
[HaU] ์‹ ์ž… ๊ธฐ์ˆ  ๋ฉด์ ‘ ์ค€๋น„ java์œ ๋ฆฌ ํ•˜
ย 
Chapter7~9 ppt
Chapter7~9 pptChapter7~9 ppt
Chapter7~9 pptInjae Lee
ย 
C++ Template/STL study
C++ Template/STL studyC++ Template/STL study
C++ Template/STL studySeo Dong-yu
ย 
์ดํŽ™ํ‹ฐ๋ธŒ C++ (7~9)
์ดํŽ™ํ‹ฐ๋ธŒ C++ (7~9)์ดํŽ™ํ‹ฐ๋ธŒ C++ (7~9)
์ดํŽ™ํ‹ฐ๋ธŒ C++ (7~9)์ต์„ฑ ์กฐ
ย 
C# ๊ฐœ์š” ๋ฐ ์†Œ๊ฐœ [ ์œ ๋‹ˆํ‹ฐ ๋ฐ C# ์Šคํ„ฐ๋”” / 2024-04-19 ]
C# ๊ฐœ์š” ๋ฐ ์†Œ๊ฐœ [ ์œ ๋‹ˆํ‹ฐ ๋ฐ C# ์Šคํ„ฐ๋”” / 2024-04-19 ]C# ๊ฐœ์š” ๋ฐ ์†Œ๊ฐœ [ ์œ ๋‹ˆํ‹ฐ ๋ฐ C# ์Šคํ„ฐ๋”” / 2024-04-19 ]
C# ๊ฐœ์š” ๋ฐ ์†Œ๊ฐœ [ ์œ ๋‹ˆํ‹ฐ ๋ฐ C# ์Šคํ„ฐ๋”” / 2024-04-19 ]leusin2
ย 
์ดํŽ™ํ‹ฐ๋ธŒ C++ ์Šคํ„ฐ๋””
์ดํŽ™ํ‹ฐ๋ธŒ C++ ์Šคํ„ฐ๋””์ดํŽ™ํ‹ฐ๋ธŒ C++ ์Šคํ„ฐ๋””
์ดํŽ™ํ‹ฐ๋ธŒ C++ ์Šคํ„ฐ๋””quxn6
ย 
์•ˆ๋“œ๋กœ์ด๋“œ๊ธฐ์ดˆ
์•ˆ๋“œ๋กœ์ด๋“œ๊ธฐ์ดˆ์•ˆ๋“œ๋กœ์ด๋“œ๊ธฐ์ดˆ
์•ˆ๋“œ๋กœ์ด๋“œ๊ธฐ์ดˆhylo926
ย 
Rails style-guide-2
Rails style-guide-2Rails style-guide-2
Rails style-guide-2Yunho Jo
ย 
[์•„๊ฟˆ์‚ฌ] The C++ Programming Language 13์žฅ ํ…œํ”Œ๋ฆฟ
[์•„๊ฟˆ์‚ฌ] The C++ Programming Language 13์žฅ ํ…œํ”Œ๋ฆฟ[์•„๊ฟˆ์‚ฌ] The C++ Programming Language 13์žฅ ํ…œํ”Œ๋ฆฟ
[์•„๊ฟˆ์‚ฌ] The C++ Programming Language 13์žฅ ํ…œํ”Œ๋ฆฟํ•ด๊ฐ•
ย 
Effective c++ chapter 1,2 ์š”์•ฝ
Effective c++ chapter 1,2 ์š”์•ฝEffective c++ chapter 1,2 ์š”์•ฝ
Effective c++ chapter 1,2 ์š”์•ฝNam Hyeonuk
ย 
[Swift] Extensions
[Swift] Extensions[Swift] Extensions
[Swift] ExtensionsBill Kim
ย 
๋ธํŒŒ์ด ์ฝ”๋”ฉ ์Šคํƒ€์ผ๊ณผ ์•„ํ‚คํ…์ฒ˜
๋ธํŒŒ์ด ์ฝ”๋”ฉ ์Šคํƒ€์ผ๊ณผ ์•„ํ‚คํ…์ฒ˜๋ธํŒŒ์ด ์ฝ”๋”ฉ ์Šคํƒ€์ผ๊ณผ ์•„ํ‚คํ…์ฒ˜
๋ธํŒŒ์ด ์ฝ”๋”ฉ ์Šคํƒ€์ผ๊ณผ ์•„ํ‚คํ…์ฒ˜Devgear
ย 
Data Structure 4
Data Structure 4Data Structure 4
Data Structure 4yonsei
ย 
C++ api design ํ’ˆ์งˆ
C++ api design ํ’ˆ์งˆC++ api design ํ’ˆ์งˆ
C++ api design ํ’ˆ์งˆHyeonSeok Choi
ย 

Semelhante a 2014-15 Intermediate C++ Study #7 (20)

Effective STL 1~4์žฅ ์ •๋ฆฌ
Effective STL 1~4์žฅ ์ •๋ฆฌEffective STL 1~4์žฅ ์ •๋ฆฌ
Effective STL 1~4์žฅ ์ •๋ฆฌ
ย 
์ดํŽ™ํ‹ฐ๋ธŒ C++ 789 ๊ณต๋ถ€
์ดํŽ™ํ‹ฐ๋ธŒ C++ 789 ๊ณต๋ถ€์ดํŽ™ํ‹ฐ๋ธŒ C++ 789 ๊ณต๋ถ€
์ดํŽ™ํ‹ฐ๋ธŒ C++ 789 ๊ณต๋ถ€
ย 
Effective c++chapter4
Effective c++chapter4Effective c++chapter4
Effective c++chapter4
ย 
[์Šคํ”„๋ง ์Šคํ„ฐ๋”” 1์ผ์ฐจ] ํ…œํ”Œ๋ฆฟ
[์Šคํ”„๋ง ์Šคํ„ฐ๋”” 1์ผ์ฐจ] ํ…œํ”Œ๋ฆฟ[์Šคํ”„๋ง ์Šคํ„ฐ๋”” 1์ผ์ฐจ] ํ…œํ”Œ๋ฆฟ
[์Šคํ”„๋ง ์Šคํ„ฐ๋”” 1์ผ์ฐจ] ํ…œํ”Œ๋ฆฟ
ย 
[HaU] ์‹ ์ž… ๊ธฐ์ˆ  ๋ฉด์ ‘ ์ค€๋น„ java
[HaU] ์‹ ์ž… ๊ธฐ์ˆ  ๋ฉด์ ‘ ์ค€๋น„ java[HaU] ์‹ ์ž… ๊ธฐ์ˆ  ๋ฉด์ ‘ ์ค€๋น„ java
[HaU] ์‹ ์ž… ๊ธฐ์ˆ  ๋ฉด์ ‘ ์ค€๋น„ java
ย 
Effective c++ 4
Effective c++ 4Effective c++ 4
Effective c++ 4
ย 
Chapter7~9 ppt
Chapter7~9 pptChapter7~9 ppt
Chapter7~9 ppt
ย 
C++ Template/STL study
C++ Template/STL studyC++ Template/STL study
C++ Template/STL study
ย 
์ดํŽ™ํ‹ฐ๋ธŒ C++ (7~9)
์ดํŽ™ํ‹ฐ๋ธŒ C++ (7~9)์ดํŽ™ํ‹ฐ๋ธŒ C++ (7~9)
์ดํŽ™ํ‹ฐ๋ธŒ C++ (7~9)
ย 
C# ๊ฐœ์š” ๋ฐ ์†Œ๊ฐœ [ ์œ ๋‹ˆํ‹ฐ ๋ฐ C# ์Šคํ„ฐ๋”” / 2024-04-19 ]
C# ๊ฐœ์š” ๋ฐ ์†Œ๊ฐœ [ ์œ ๋‹ˆํ‹ฐ ๋ฐ C# ์Šคํ„ฐ๋”” / 2024-04-19 ]C# ๊ฐœ์š” ๋ฐ ์†Œ๊ฐœ [ ์œ ๋‹ˆํ‹ฐ ๋ฐ C# ์Šคํ„ฐ๋”” / 2024-04-19 ]
C# ๊ฐœ์š” ๋ฐ ์†Œ๊ฐœ [ ์œ ๋‹ˆํ‹ฐ ๋ฐ C# ์Šคํ„ฐ๋”” / 2024-04-19 ]
ย 
์ดํŽ™ํ‹ฐ๋ธŒ C++ ์Šคํ„ฐ๋””
์ดํŽ™ํ‹ฐ๋ธŒ C++ ์Šคํ„ฐ๋””์ดํŽ™ํ‹ฐ๋ธŒ C++ ์Šคํ„ฐ๋””
์ดํŽ™ํ‹ฐ๋ธŒ C++ ์Šคํ„ฐ๋””
ย 
์•ˆ๋“œ๋กœ์ด๋“œ๊ธฐ์ดˆ
์•ˆ๋“œ๋กœ์ด๋“œ๊ธฐ์ดˆ์•ˆ๋“œ๋กœ์ด๋“œ๊ธฐ์ดˆ
์•ˆ๋“œ๋กœ์ด๋“œ๊ธฐ์ดˆ
ย 
Rails style-guide-2
Rails style-guide-2Rails style-guide-2
Rails style-guide-2
ย 
Mec 56
Mec 56Mec 56
Mec 56
ย 
[์•„๊ฟˆ์‚ฌ] The C++ Programming Language 13์žฅ ํ…œํ”Œ๋ฆฟ
[์•„๊ฟˆ์‚ฌ] The C++ Programming Language 13์žฅ ํ…œํ”Œ๋ฆฟ[์•„๊ฟˆ์‚ฌ] The C++ Programming Language 13์žฅ ํ…œํ”Œ๋ฆฟ
[์•„๊ฟˆ์‚ฌ] The C++ Programming Language 13์žฅ ํ…œํ”Œ๋ฆฟ
ย 
Effective c++ chapter 1,2 ์š”์•ฝ
Effective c++ chapter 1,2 ์š”์•ฝEffective c++ chapter 1,2 ์š”์•ฝ
Effective c++ chapter 1,2 ์š”์•ฝ
ย 
[Swift] Extensions
[Swift] Extensions[Swift] Extensions
[Swift] Extensions
ย 
๋ธํŒŒ์ด ์ฝ”๋”ฉ ์Šคํƒ€์ผ๊ณผ ์•„ํ‚คํ…์ฒ˜
๋ธํŒŒ์ด ์ฝ”๋”ฉ ์Šคํƒ€์ผ๊ณผ ์•„ํ‚คํ…์ฒ˜๋ธํŒŒ์ด ์ฝ”๋”ฉ ์Šคํƒ€์ผ๊ณผ ์•„ํ‚คํ…์ฒ˜
๋ธํŒŒ์ด ์ฝ”๋”ฉ ์Šคํƒ€์ผ๊ณผ ์•„ํ‚คํ…์ฒ˜
ย 
Data Structure 4
Data Structure 4Data Structure 4
Data Structure 4
ย 
C++ api design ํ’ˆ์งˆ
C++ api design ํ’ˆ์งˆC++ api design ํ’ˆ์งˆ
C++ api design ํ’ˆ์งˆ
ย 

Mais de Chris Ohk

์ธํ”„์ฝ˜ 2022 - Rust ํฌ๋กœ์Šค ํ”Œ๋žซํผ ํ”„๋กœ๊ทธ๋ž˜๋ฐ
์ธํ”„์ฝ˜ 2022 - Rust ํฌ๋กœ์Šค ํ”Œ๋žซํผ ํ”„๋กœ๊ทธ๋ž˜๋ฐ์ธํ”„์ฝ˜ 2022 - Rust ํฌ๋กœ์Šค ํ”Œ๋žซํผ ํ”„๋กœ๊ทธ๋ž˜๋ฐ
์ธํ”„์ฝ˜ 2022 - Rust ํฌ๋กœ์Šค ํ”Œ๋žซํผ ํ”„๋กœ๊ทธ๋ž˜๋ฐChris Ohk
ย 
๊ณ ๋ ค๋Œ€ํ•™๊ต ์ปดํ“จํ„ฐํ•™๊ณผ ํŠน๊ฐ• - ๋Œ€ํ•™์ƒ ๋•Œ ์•Œ์•˜๋”๋ผ๋ฉด ์ข‹์•˜์„ ๊ฒƒ๋“ค
๊ณ ๋ ค๋Œ€ํ•™๊ต ์ปดํ“จํ„ฐํ•™๊ณผ ํŠน๊ฐ• - ๋Œ€ํ•™์ƒ ๋•Œ ์•Œ์•˜๋”๋ผ๋ฉด ์ข‹์•˜์„ ๊ฒƒ๋“ค๊ณ ๋ ค๋Œ€ํ•™๊ต ์ปดํ“จํ„ฐํ•™๊ณผ ํŠน๊ฐ• - ๋Œ€ํ•™์ƒ ๋•Œ ์•Œ์•˜๋”๋ผ๋ฉด ์ข‹์•˜์„ ๊ฒƒ๋“ค
๊ณ ๋ ค๋Œ€ํ•™๊ต ์ปดํ“จํ„ฐํ•™๊ณผ ํŠน๊ฐ• - ๋Œ€ํ•™์ƒ ๋•Œ ์•Œ์•˜๋”๋ผ๋ฉด ์ข‹์•˜์„ ๊ฒƒ๋“คChris Ohk
ย 
Momenti Seminar - 5 Years of RosettaStone
Momenti Seminar - 5 Years of RosettaStoneMomenti Seminar - 5 Years of RosettaStone
Momenti Seminar - 5 Years of RosettaStoneChris Ohk
ย 
์„ ๋ฆฐ์ธํ„ฐ๋„ท๊ณ ๋“ฑํ•™๊ต 2021 ์•Œ๊ณ ๋ฆฌ์ฆ˜ ์ปจํผ๋Ÿฐ์Šค - Rust๋กœ ์•Œ๊ณ ๋ฆฌ์ฆ˜ ๋ฌธ์ œ ํ’€์–ด๋ณด๊ธฐ
์„ ๋ฆฐ์ธํ„ฐ๋„ท๊ณ ๋“ฑํ•™๊ต 2021 ์•Œ๊ณ ๋ฆฌ์ฆ˜ ์ปจํผ๋Ÿฐ์Šค - Rust๋กœ ์•Œ๊ณ ๋ฆฌ์ฆ˜ ๋ฌธ์ œ ํ’€์–ด๋ณด๊ธฐ์„ ๋ฆฐ์ธํ„ฐ๋„ท๊ณ ๋“ฑํ•™๊ต 2021 ์•Œ๊ณ ๋ฆฌ์ฆ˜ ์ปจํผ๋Ÿฐ์Šค - Rust๋กœ ์•Œ๊ณ ๋ฆฌ์ฆ˜ ๋ฌธ์ œ ํ’€์–ด๋ณด๊ธฐ
์„ ๋ฆฐ์ธํ„ฐ๋„ท๊ณ ๋“ฑํ•™๊ต 2021 ์•Œ๊ณ ๋ฆฌ์ฆ˜ ์ปจํผ๋Ÿฐ์Šค - Rust๋กœ ์•Œ๊ณ ๋ฆฌ์ฆ˜ ๋ฌธ์ œ ํ’€์–ด๋ณด๊ธฐChris Ohk
ย 
Momenti Seminar - A Tour of Rust, Part 2
Momenti Seminar - A Tour of Rust, Part 2Momenti Seminar - A Tour of Rust, Part 2
Momenti Seminar - A Tour of Rust, Part 2Chris Ohk
ย 
Momenti Seminar - A Tour of Rust, Part 1
Momenti Seminar - A Tour of Rust, Part 1Momenti Seminar - A Tour of Rust, Part 1
Momenti Seminar - A Tour of Rust, Part 1Chris Ohk
ย 
Evolving Reinforcement Learning Algorithms, JD. Co-Reyes et al, 2021
Evolving Reinforcement Learning Algorithms, JD. Co-Reyes et al, 2021Evolving Reinforcement Learning Algorithms, JD. Co-Reyes et al, 2021
Evolving Reinforcement Learning Algorithms, JD. Co-Reyes et al, 2021Chris Ohk
ย 
Adversarially Guided Actor-Critic, Y. Flet-Berliac et al, 2021
Adversarially Guided Actor-Critic, Y. Flet-Berliac et al, 2021Adversarially Guided Actor-Critic, Y. Flet-Berliac et al, 2021
Adversarially Guided Actor-Critic, Y. Flet-Berliac et al, 2021Chris Ohk
ย 
Agent57: Outperforming the Atari Human Benchmark, Badia, A. P. et al, 2020
Agent57: Outperforming the Atari Human Benchmark, Badia, A. P. et al, 2020Agent57: Outperforming the Atari Human Benchmark, Badia, A. P. et al, 2020
Agent57: Outperforming the Atari Human Benchmark, Badia, A. P. et al, 2020Chris Ohk
ย 
Proximal Policy Optimization Algorithms, Schulman et al, 2017
Proximal Policy Optimization Algorithms, Schulman et al, 2017Proximal Policy Optimization Algorithms, Schulman et al, 2017
Proximal Policy Optimization Algorithms, Schulman et al, 2017Chris Ohk
ย 
Trust Region Policy Optimization, Schulman et al, 2015
Trust Region Policy Optimization, Schulman et al, 2015Trust Region Policy Optimization, Schulman et al, 2015
Trust Region Policy Optimization, Schulman et al, 2015Chris Ohk
ย 
Continuous Control with Deep Reinforcement Learning, lillicrap et al, 2015
Continuous Control with Deep Reinforcement Learning, lillicrap et al, 2015Continuous Control with Deep Reinforcement Learning, lillicrap et al, 2015
Continuous Control with Deep Reinforcement Learning, lillicrap et al, 2015Chris Ohk
ย 
GDG Gwangju DevFest 2019 - <ํ•˜์Šค์Šคํ†ค> ๊ฐ•ํ™”ํ•™์Šต ํ™˜๊ฒฝ ๊ฐœ๋ฐœ๊ธฐ
GDG Gwangju DevFest 2019 - <ํ•˜์Šค์Šคํ†ค> ๊ฐ•ํ™”ํ•™์Šต ํ™˜๊ฒฝ ๊ฐœ๋ฐœ๊ธฐGDG Gwangju DevFest 2019 - <ํ•˜์Šค์Šคํ†ค> ๊ฐ•ํ™”ํ•™์Šต ํ™˜๊ฒฝ ๊ฐœ๋ฐœ๊ธฐ
GDG Gwangju DevFest 2019 - <ํ•˜์Šค์Šคํ†ค> ๊ฐ•ํ™”ํ•™์Šต ํ™˜๊ฒฝ ๊ฐœ๋ฐœ๊ธฐChris Ohk
ย 
[RLKorea] <ํ•˜์Šค์Šคํ†ค> ๊ฐ•ํ™”ํ•™์Šต ํ™˜๊ฒฝ ๊ฐœ๋ฐœ๊ธฐ
[RLKorea] <ํ•˜์Šค์Šคํ†ค> ๊ฐ•ํ™”ํ•™์Šต ํ™˜๊ฒฝ ๊ฐœ๋ฐœ๊ธฐ[RLKorea] <ํ•˜์Šค์Šคํ†ค> ๊ฐ•ํ™”ํ•™์Šต ํ™˜๊ฒฝ ๊ฐœ๋ฐœ๊ธฐ
[RLKorea] <ํ•˜์Šค์Šคํ†ค> ๊ฐ•ํ™”ํ•™์Šต ํ™˜๊ฒฝ ๊ฐœ๋ฐœ๊ธฐChris Ohk
ย 
[NDC 2019] ํ•˜์Šค์Šคํ†ค ๊ฐ•ํ™”ํ•™์Šต ํ™˜๊ฒฝ ๊ฐœ๋ฐœ๊ธฐ
[NDC 2019] ํ•˜์Šค์Šคํ†ค ๊ฐ•ํ™”ํ•™์Šต ํ™˜๊ฒฝ ๊ฐœ๋ฐœ๊ธฐ[NDC 2019] ํ•˜์Šค์Šคํ†ค ๊ฐ•ํ™”ํ•™์Šต ํ™˜๊ฒฝ ๊ฐœ๋ฐœ๊ธฐ
[NDC 2019] ํ•˜์Šค์Šคํ†ค ๊ฐ•ํ™”ํ•™์Šต ํ™˜๊ฒฝ ๊ฐœ๋ฐœ๊ธฐChris Ohk
ย 
C++20 Key Features Summary
C++20 Key Features SummaryC++20 Key Features Summary
C++20 Key Features SummaryChris Ohk
ย 
[๋ธ๋ฆฌ๋งŒ์ฃผ] ๋Œ€ํ•™์› ์บ์Šฌ - ์„์‚ฌ์—์„œ ๊ฒŒ์ž„ ํ”„๋กœ๊ทธ๋ž˜๋จธ๊นŒ์ง€
[๋ธ๋ฆฌ๋งŒ์ฃผ] ๋Œ€ํ•™์› ์บ์Šฌ - ์„์‚ฌ์—์„œ ๊ฒŒ์ž„ ํ”„๋กœ๊ทธ๋ž˜๋จธ๊นŒ์ง€[๋ธ๋ฆฌ๋งŒ์ฃผ] ๋Œ€ํ•™์› ์บ์Šฌ - ์„์‚ฌ์—์„œ ๊ฒŒ์ž„ ํ”„๋กœ๊ทธ๋ž˜๋จธ๊นŒ์ง€
[๋ธ๋ฆฌ๋งŒ์ฃผ] ๋Œ€ํ•™์› ์บ์Šฌ - ์„์‚ฌ์—์„œ ๊ฒŒ์ž„ ํ”„๋กœ๊ทธ๋ž˜๋จธ๊นŒ์ง€Chris Ohk
ย 
๋””๋ฏธ๊ณ  ํŠน๊ฐ• - ๊ฐœ๋ฐœ์„ ์‹œ์ž‘ํ•˜๋ ค๋Š” ์—ฌ๋Ÿฌ๋ถ„์—๊ฒŒ
๋””๋ฏธ๊ณ  ํŠน๊ฐ• - ๊ฐœ๋ฐœ์„ ์‹œ์ž‘ํ•˜๋ ค๋Š” ์—ฌ๋Ÿฌ๋ถ„์—๊ฒŒ๋””๋ฏธ๊ณ  ํŠน๊ฐ• - ๊ฐœ๋ฐœ์„ ์‹œ์ž‘ํ•˜๋ ค๋Š” ์—ฌ๋Ÿฌ๋ถ„์—๊ฒŒ
๋””๋ฏธ๊ณ  ํŠน๊ฐ• - ๊ฐœ๋ฐœ์„ ์‹œ์ž‘ํ•˜๋ ค๋Š” ์—ฌ๋Ÿฌ๋ถ„์—๊ฒŒChris Ohk
ย 
์ฒญ๊ฐ•๋Œ€ ํŠน๊ฐ• - ํ”„๋กœ์ ํŠธ ์ œ๋Œ€๋กœ ํ•ด๋ณด๊ธฐ
์ฒญ๊ฐ•๋Œ€ ํŠน๊ฐ• - ํ”„๋กœ์ ํŠธ ์ œ๋Œ€๋กœ ํ•ด๋ณด๊ธฐ์ฒญ๊ฐ•๋Œ€ ํŠน๊ฐ• - ํ”„๋กœ์ ํŠธ ์ œ๋Œ€๋กœ ํ•ด๋ณด๊ธฐ
์ฒญ๊ฐ•๋Œ€ ํŠน๊ฐ• - ํ”„๋กœ์ ํŠธ ์ œ๋Œ€๋กœ ํ•ด๋ณด๊ธฐChris Ohk
ย 
[NDC 2018] ์œ ์ฒด์—ญํ•™ ์—”์ง„ ๊ฐœ๋ฐœ๊ธฐ
[NDC 2018] ์œ ์ฒด์—ญํ•™ ์—”์ง„ ๊ฐœ๋ฐœ๊ธฐ[NDC 2018] ์œ ์ฒด์—ญํ•™ ์—”์ง„ ๊ฐœ๋ฐœ๊ธฐ
[NDC 2018] ์œ ์ฒด์—ญํ•™ ์—”์ง„ ๊ฐœ๋ฐœ๊ธฐChris Ohk
ย 

Mais de Chris Ohk (20)

์ธํ”„์ฝ˜ 2022 - Rust ํฌ๋กœ์Šค ํ”Œ๋žซํผ ํ”„๋กœ๊ทธ๋ž˜๋ฐ
์ธํ”„์ฝ˜ 2022 - Rust ํฌ๋กœ์Šค ํ”Œ๋žซํผ ํ”„๋กœ๊ทธ๋ž˜๋ฐ์ธํ”„์ฝ˜ 2022 - Rust ํฌ๋กœ์Šค ํ”Œ๋žซํผ ํ”„๋กœ๊ทธ๋ž˜๋ฐ
์ธํ”„์ฝ˜ 2022 - Rust ํฌ๋กœ์Šค ํ”Œ๋žซํผ ํ”„๋กœ๊ทธ๋ž˜๋ฐ
ย 
๊ณ ๋ ค๋Œ€ํ•™๊ต ์ปดํ“จํ„ฐํ•™๊ณผ ํŠน๊ฐ• - ๋Œ€ํ•™์ƒ ๋•Œ ์•Œ์•˜๋”๋ผ๋ฉด ์ข‹์•˜์„ ๊ฒƒ๋“ค
๊ณ ๋ ค๋Œ€ํ•™๊ต ์ปดํ“จํ„ฐํ•™๊ณผ ํŠน๊ฐ• - ๋Œ€ํ•™์ƒ ๋•Œ ์•Œ์•˜๋”๋ผ๋ฉด ์ข‹์•˜์„ ๊ฒƒ๋“ค๊ณ ๋ ค๋Œ€ํ•™๊ต ์ปดํ“จํ„ฐํ•™๊ณผ ํŠน๊ฐ• - ๋Œ€ํ•™์ƒ ๋•Œ ์•Œ์•˜๋”๋ผ๋ฉด ์ข‹์•˜์„ ๊ฒƒ๋“ค
๊ณ ๋ ค๋Œ€ํ•™๊ต ์ปดํ“จํ„ฐํ•™๊ณผ ํŠน๊ฐ• - ๋Œ€ํ•™์ƒ ๋•Œ ์•Œ์•˜๋”๋ผ๋ฉด ์ข‹์•˜์„ ๊ฒƒ๋“ค
ย 
Momenti Seminar - 5 Years of RosettaStone
Momenti Seminar - 5 Years of RosettaStoneMomenti Seminar - 5 Years of RosettaStone
Momenti Seminar - 5 Years of RosettaStone
ย 
์„ ๋ฆฐ์ธํ„ฐ๋„ท๊ณ ๋“ฑํ•™๊ต 2021 ์•Œ๊ณ ๋ฆฌ์ฆ˜ ์ปจํผ๋Ÿฐ์Šค - Rust๋กœ ์•Œ๊ณ ๋ฆฌ์ฆ˜ ๋ฌธ์ œ ํ’€์–ด๋ณด๊ธฐ
์„ ๋ฆฐ์ธํ„ฐ๋„ท๊ณ ๋“ฑํ•™๊ต 2021 ์•Œ๊ณ ๋ฆฌ์ฆ˜ ์ปจํผ๋Ÿฐ์Šค - Rust๋กœ ์•Œ๊ณ ๋ฆฌ์ฆ˜ ๋ฌธ์ œ ํ’€์–ด๋ณด๊ธฐ์„ ๋ฆฐ์ธํ„ฐ๋„ท๊ณ ๋“ฑํ•™๊ต 2021 ์•Œ๊ณ ๋ฆฌ์ฆ˜ ์ปจํผ๋Ÿฐ์Šค - Rust๋กœ ์•Œ๊ณ ๋ฆฌ์ฆ˜ ๋ฌธ์ œ ํ’€์–ด๋ณด๊ธฐ
์„ ๋ฆฐ์ธํ„ฐ๋„ท๊ณ ๋“ฑํ•™๊ต 2021 ์•Œ๊ณ ๋ฆฌ์ฆ˜ ์ปจํผ๋Ÿฐ์Šค - Rust๋กœ ์•Œ๊ณ ๋ฆฌ์ฆ˜ ๋ฌธ์ œ ํ’€์–ด๋ณด๊ธฐ
ย 
Momenti Seminar - A Tour of Rust, Part 2
Momenti Seminar - A Tour of Rust, Part 2Momenti Seminar - A Tour of Rust, Part 2
Momenti Seminar - A Tour of Rust, Part 2
ย 
Momenti Seminar - A Tour of Rust, Part 1
Momenti Seminar - A Tour of Rust, Part 1Momenti Seminar - A Tour of Rust, Part 1
Momenti Seminar - A Tour of Rust, Part 1
ย 
Evolving Reinforcement Learning Algorithms, JD. Co-Reyes et al, 2021
Evolving Reinforcement Learning Algorithms, JD. Co-Reyes et al, 2021Evolving Reinforcement Learning Algorithms, JD. Co-Reyes et al, 2021
Evolving Reinforcement Learning Algorithms, JD. Co-Reyes et al, 2021
ย 
Adversarially Guided Actor-Critic, Y. Flet-Berliac et al, 2021
Adversarially Guided Actor-Critic, Y. Flet-Berliac et al, 2021Adversarially Guided Actor-Critic, Y. Flet-Berliac et al, 2021
Adversarially Guided Actor-Critic, Y. Flet-Berliac et al, 2021
ย 
Agent57: Outperforming the Atari Human Benchmark, Badia, A. P. et al, 2020
Agent57: Outperforming the Atari Human Benchmark, Badia, A. P. et al, 2020Agent57: Outperforming the Atari Human Benchmark, Badia, A. P. et al, 2020
Agent57: Outperforming the Atari Human Benchmark, Badia, A. P. et al, 2020
ย 
Proximal Policy Optimization Algorithms, Schulman et al, 2017
Proximal Policy Optimization Algorithms, Schulman et al, 2017Proximal Policy Optimization Algorithms, Schulman et al, 2017
Proximal Policy Optimization Algorithms, Schulman et al, 2017
ย 
Trust Region Policy Optimization, Schulman et al, 2015
Trust Region Policy Optimization, Schulman et al, 2015Trust Region Policy Optimization, Schulman et al, 2015
Trust Region Policy Optimization, Schulman et al, 2015
ย 
Continuous Control with Deep Reinforcement Learning, lillicrap et al, 2015
Continuous Control with Deep Reinforcement Learning, lillicrap et al, 2015Continuous Control with Deep Reinforcement Learning, lillicrap et al, 2015
Continuous Control with Deep Reinforcement Learning, lillicrap et al, 2015
ย 
GDG Gwangju DevFest 2019 - <ํ•˜์Šค์Šคํ†ค> ๊ฐ•ํ™”ํ•™์Šต ํ™˜๊ฒฝ ๊ฐœ๋ฐœ๊ธฐ
GDG Gwangju DevFest 2019 - <ํ•˜์Šค์Šคํ†ค> ๊ฐ•ํ™”ํ•™์Šต ํ™˜๊ฒฝ ๊ฐœ๋ฐœ๊ธฐGDG Gwangju DevFest 2019 - <ํ•˜์Šค์Šคํ†ค> ๊ฐ•ํ™”ํ•™์Šต ํ™˜๊ฒฝ ๊ฐœ๋ฐœ๊ธฐ
GDG Gwangju DevFest 2019 - <ํ•˜์Šค์Šคํ†ค> ๊ฐ•ํ™”ํ•™์Šต ํ™˜๊ฒฝ ๊ฐœ๋ฐœ๊ธฐ
ย 
[RLKorea] <ํ•˜์Šค์Šคํ†ค> ๊ฐ•ํ™”ํ•™์Šต ํ™˜๊ฒฝ ๊ฐœ๋ฐœ๊ธฐ
[RLKorea] <ํ•˜์Šค์Šคํ†ค> ๊ฐ•ํ™”ํ•™์Šต ํ™˜๊ฒฝ ๊ฐœ๋ฐœ๊ธฐ[RLKorea] <ํ•˜์Šค์Šคํ†ค> ๊ฐ•ํ™”ํ•™์Šต ํ™˜๊ฒฝ ๊ฐœ๋ฐœ๊ธฐ
[RLKorea] <ํ•˜์Šค์Šคํ†ค> ๊ฐ•ํ™”ํ•™์Šต ํ™˜๊ฒฝ ๊ฐœ๋ฐœ๊ธฐ
ย 
[NDC 2019] ํ•˜์Šค์Šคํ†ค ๊ฐ•ํ™”ํ•™์Šต ํ™˜๊ฒฝ ๊ฐœ๋ฐœ๊ธฐ
[NDC 2019] ํ•˜์Šค์Šคํ†ค ๊ฐ•ํ™”ํ•™์Šต ํ™˜๊ฒฝ ๊ฐœ๋ฐœ๊ธฐ[NDC 2019] ํ•˜์Šค์Šคํ†ค ๊ฐ•ํ™”ํ•™์Šต ํ™˜๊ฒฝ ๊ฐœ๋ฐœ๊ธฐ
[NDC 2019] ํ•˜์Šค์Šคํ†ค ๊ฐ•ํ™”ํ•™์Šต ํ™˜๊ฒฝ ๊ฐœ๋ฐœ๊ธฐ
ย 
C++20 Key Features Summary
C++20 Key Features SummaryC++20 Key Features Summary
C++20 Key Features Summary
ย 
[๋ธ๋ฆฌ๋งŒ์ฃผ] ๋Œ€ํ•™์› ์บ์Šฌ - ์„์‚ฌ์—์„œ ๊ฒŒ์ž„ ํ”„๋กœ๊ทธ๋ž˜๋จธ๊นŒ์ง€
[๋ธ๋ฆฌ๋งŒ์ฃผ] ๋Œ€ํ•™์› ์บ์Šฌ - ์„์‚ฌ์—์„œ ๊ฒŒ์ž„ ํ”„๋กœ๊ทธ๋ž˜๋จธ๊นŒ์ง€[๋ธ๋ฆฌ๋งŒ์ฃผ] ๋Œ€ํ•™์› ์บ์Šฌ - ์„์‚ฌ์—์„œ ๊ฒŒ์ž„ ํ”„๋กœ๊ทธ๋ž˜๋จธ๊นŒ์ง€
[๋ธ๋ฆฌ๋งŒ์ฃผ] ๋Œ€ํ•™์› ์บ์Šฌ - ์„์‚ฌ์—์„œ ๊ฒŒ์ž„ ํ”„๋กœ๊ทธ๋ž˜๋จธ๊นŒ์ง€
ย 
๋””๋ฏธ๊ณ  ํŠน๊ฐ• - ๊ฐœ๋ฐœ์„ ์‹œ์ž‘ํ•˜๋ ค๋Š” ์—ฌ๋Ÿฌ๋ถ„์—๊ฒŒ
๋””๋ฏธ๊ณ  ํŠน๊ฐ• - ๊ฐœ๋ฐœ์„ ์‹œ์ž‘ํ•˜๋ ค๋Š” ์—ฌ๋Ÿฌ๋ถ„์—๊ฒŒ๋””๋ฏธ๊ณ  ํŠน๊ฐ• - ๊ฐœ๋ฐœ์„ ์‹œ์ž‘ํ•˜๋ ค๋Š” ์—ฌ๋Ÿฌ๋ถ„์—๊ฒŒ
๋””๋ฏธ๊ณ  ํŠน๊ฐ• - ๊ฐœ๋ฐœ์„ ์‹œ์ž‘ํ•˜๋ ค๋Š” ์—ฌ๋Ÿฌ๋ถ„์—๊ฒŒ
ย 
์ฒญ๊ฐ•๋Œ€ ํŠน๊ฐ• - ํ”„๋กœ์ ํŠธ ์ œ๋Œ€๋กœ ํ•ด๋ณด๊ธฐ
์ฒญ๊ฐ•๋Œ€ ํŠน๊ฐ• - ํ”„๋กœ์ ํŠธ ์ œ๋Œ€๋กœ ํ•ด๋ณด๊ธฐ์ฒญ๊ฐ•๋Œ€ ํŠน๊ฐ• - ํ”„๋กœ์ ํŠธ ์ œ๋Œ€๋กœ ํ•ด๋ณด๊ธฐ
์ฒญ๊ฐ•๋Œ€ ํŠน๊ฐ• - ํ”„๋กœ์ ํŠธ ์ œ๋Œ€๋กœ ํ•ด๋ณด๊ธฐ
ย 
[NDC 2018] ์œ ์ฒด์—ญํ•™ ์—”์ง„ ๊ฐœ๋ฐœ๊ธฐ
[NDC 2018] ์œ ์ฒด์—ญํ•™ ์—”์ง„ ๊ฐœ๋ฐœ๊ธฐ[NDC 2018] ์œ ์ฒด์—ญํ•™ ์—”์ง„ ๊ฐœ๋ฐœ๊ธฐ
[NDC 2018] ์œ ์ฒด์—ญํ•™ ์—”์ง„ ๊ฐœ๋ฐœ๊ธฐ
ย 

2014-15 Intermediate C++ Study #7

  • 1. 2014-15 INTERMEDIATE C++ STUDY #7 ์˜ฅ์ฐฌํ˜ธ
  • 2. ๋™์  ๋ฉ”๋ชจ๋ฆฌ ํ• ๋‹น์„ ํ†ตํ•œ ๊ฐ์ฒด ์ƒ์„ฑ SPREADSHEET ํด๋ž˜์Šค, ์†Œ๋ฉธ์ž๋ฅผ ์ด์šฉํ•œ ๋ฉ”๋ชจ๋ฆฌ ํ•ด์ œ, ๋ณต์ œ์˜ ๋Œ€์ž…๊ณผ ๊ด€๋ฆฌ
  • 3. SPREADSHEET ํด๋ž˜์Šค SpreadsheetCell Spreadsheet SpreadsheetApplication ์ง€๋‚œ ์‹œ๊ฐ„์— SpreadsheetCell ํด๋ž˜์Šค๋ฅผ ์ž‘์„ฑํ–ˆ์—ˆ๋‹ค. ์ด๋ฒˆ ์‹œ๊ฐ„์—๋Š” Spreadsheet ํด๋ž˜์Šค๋ฅผ ์ ์ง„์ ์œผ๋กœ ๋งŒ๋“ค์–ด ๋ณธ๋‹ค.
  • 4. SPREADSHEET ํด๋ž˜์Šค SpreadsheetCell**์€ ์„œ๋กœ ๋‹ค๋ฅธ ํฌ๊ธฐ์˜ ์…€ ๊ฒฉ์ž๋ฅผ ๊ฐ€์งˆ ์ˆ˜ ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ํฌ์ธํ„ฐ ํƒ€์ž…์„ ํ†ตํ•ด ์ƒ์„ฑ์ž์—์„œ ์…€ ๊ฒฉ์ž์˜ ๋†’์ด์™€ ๋„ˆ๋น„์— ๋งž์ถ”์–ด ๋™์ ์œผ๋กœ ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ํ• ๋‹นํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ•œ๋‹ค.
  • 5. SPREADSHEET ํด๋ž˜์Šค 2์ฐจ์› ๋ฐฐ์—ด์˜ ๋™์  ํ• ๋‹น ์ฝ”๋“œ, ๊ทธ๋ฆฌ๊ณ  ๋†’์ด 3 / ๋„ˆ๋น„ 4 ํฌ๊ธฐ์˜ ์…€์„ ๊ฐ–๋Š” Spreadsheet ๊ฐ์ฒด ์ƒ์„ฑ. 4 int mWidth 3 int mHeight ์Šคํƒ(Stack) ๋ฉ”๋ชจ๋ฆฌ SpreadsheetCell** mCells ํž™(Heap) ๋ฉ”๋ชจ๋ฆฌ ๊ฐ ํ•ญ๋ชฉ์€ ๋ฌด๋ช…์˜ SpreadsheetCell ํฌ์ธํ„ฐ๋‹ค ๊ฐ ํ•ญ๋ชฉ์€ ๋ฌด๋ช…์˜ SpreadsheetCell ํฌ์ธํ„ฐ๋‹ค Spreadsheet s1
  • 6. SPREADSHEET ํด๋ž˜์Šค x, y ์ขŒํ‘œ๊ฐ€ ์œ ํšจํ•œ ์…€ ์ขŒํ‘œ๋ฅผ ๊ฐ€๋ฆฌํ‚ค๋Š”์ง€ ๊ฒ€์‚ฌํ•˜๊ธฐ ์œ„ํ•ด inRange()๋ผ๋Š” ๋ฉ”์„œ๋“œ๋ฅผ ์ด์šฉ.
  • 7. ์†Œ๋ฉธ์ž๋ฅผ ์ด์šฉํ•œ ๋ฉ”๋ชจ๋ฆฌ ํ•ด์ œ ๋™์ ์œผ๋กœ ํ• ๋‹นํ•œ ๋ฉ”๋ชจ๋ฆฌ๋Š” ์‚ฌ์šฉ์ด ๋๋‚œ ํ›„ ๋ฐ˜๋“œ์‹œ ํ•ด์ œ๋ฅผ ํ•ด์ฃผ์–ด์•ผ ํ•œ๋‹ค. ๋™์ ์œผ๋กœ ํ• ๋‹นํ•œ ๋ฉ”๋ชจ๋ฆฌ์˜ ํ•ด์ œ๋Š” ๊ฐ์ฒด ์†Œ๋ฉธ์ž ์•ˆ์— ์ˆ˜ํ–‰๋˜๋Š” ๊ฒƒ์ด ๊ฐ€์žฅ ๋ฐ”๋žŒ์งํ•˜๋‹ค. ์†Œ๋ฉธ์ž๋Š” ํด๋ž˜์Šค์˜ ์ด๋ฆ„๊ณผ ๊ฐ™์€ ์ด๋ฆ„์„ ๊ฐ€์ง€๋˜ ~ ๊ธฐํ˜ธ๋ฅผ ์•ž์— ๋ถ™์ธ๋‹ค.
  • 8. ๋ณต์ œ์™€ ๋Œ€์ž…์˜ ๊ด€๋ฆฌ ๋ณต์ œ ์ƒ์„ฑ์ž์™€ ๋Œ€์ž… ์—ฐ์‚ฐ์ž๋ฅผ ์ง์ ‘ ๋งŒ๋“ค์ง€ ์•Š์œผ๋ฉด ์ปดํŒŒ์ผ๋Ÿฌ๊ฐ€ ์ž๋™์œผ๋กœ ์ƒ์„ฑํ•ด ์ค€๋‹ค. ์ปดํŒŒ์ผ๋Ÿฌ๊ฐ€ ์ž๋™์œผ๋กœ ์ƒ์„ฑํ•œ ๋ฉ”์„œ๋“œ๋Š” ๋ฐ์ดํ„ฐ ๋ฉค๋ฒ„๋“ค์— ๋Œ€ํ•ด ์žฌ๊ท€์ ์œผ๋กœ ๋ณต์ œ ์ƒ์„ฑ์ž ๋˜๋Š” ๋Œ€์ž… ์—ฐ์‚ฐ์ž๋ฅผ ํ˜ธ์ถœํ•œ๋‹ค. ๋‹จ, ๊ธฐ๋ณธ ๋ฐ์ดํ„ฐ ํƒ€์ž…์— ๋Œ€ํ•ด์„œ๋Š” ๋ณต์ œ ์ƒ์„ฑ์ž๋‚˜ ๋Œ€์ž… ์—ฐ์‚ฐ์ž ๋Œ€์‹  ์–•์€ ๋ณต์ œ(Shallow Copy)๊ฐ€ ์ผ์–ด๋‚œ๋‹ค. ํฌ์ธํ„ฐ๊ฐ€ ๊ฐ€๋ฆฌํ‚ค๋Š” ๋ฐ์ดํ„ฐ๋Š” ๋นผ๋†“๊ณ  ํ”ผ์ƒ์ ์œผ๋กœ ๋ฐ์ดํ„ฐ ๋ฉค๋ฒ„์˜ ๋น„ํŠธ ๊ฐ’์„ ์›๋ณธ์—์„œ ๋Œ€์ƒ์œผ๋กœ ๋ณต์ œํ•˜๊ธฐ๋งŒ ํ•œ๋‹ค. ์Šคํƒ(Stack) ๋ฉ”๋ชจ๋ฆฌ ํž™(Heap) ๋ฉ”๋ชจ๋ฆฌ ๊ฐ ํ•ญ๋ชฉ์€ ๋ฌด๋ช…์˜ SpreadsheetCell ํฌ์ธํ„ฐ๋‹ค ๊ฐ ํ•ญ๋ชฉ์€ ๋ฌด๋ช…์˜ SpreadsheetCell ํฌ์ธํ„ฐ๋‹ค 4 int mWidth 3 int mHeight SpreadsheetCell** mCells Spreadsheet s1 4 int mWidth 3 int mHeight SpreadsheetCell** mCells Spreadsheet s
  • 9. ๋ณต์ œ์™€ ๋Œ€์ž…์˜ ๊ด€๋ฆฌ ๋งŒ์•ฝ ์ตœ์•…์˜ ์ƒํ™ฉ์œผ๋กœ ํ•จ์ˆ˜ printSpreadsheet()๊ฐ€ Spreadsheet ๊ฐ์ฒด๋ฅผ ๋ฆฌํ„ดํ•˜๋ฉด ์Šคํƒ ๊ฐ์ฒด์ธ s์˜ ์†Œ๋ฉธ์ž๊ฐ€ ํ˜ธ์ถœ๋˜๋ฉด์„œ mCells ํฌ์ธํ„ฐ๊ฐ€ ๊ฐ€๋ฆฌํ‚ค๋Š” ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ํ•ด์ œํ•ด ๋ฒ„๋ฆฐ๋‹ค. ์ด์ œ s1์ด ๊ฐ€๋ฆฌํ‚ค๋Š” ํฌ์ธํ„ฐ๋Š” ๋”๋Š” ์œ ํšจํ•˜์ง€ ์•Š๋‹ค. ์ด๋Ÿฌํ•œ ํฌ์ธํ„ฐ๋ฅผ ๋Œ•๊ธ€๋ง ํฌ์ธํ„ฐ(Dangling Pointer)๋ผ๊ณ  ํ•œ๋‹ค. ์Šคํƒ(Stack) ๋ฉ”๋ชจ๋ฆฌ ํž™(Heap) ๋ฉ”๋ชจ๋ฆฌ ๋ฐ˜ํ™˜ ํ•ด์ œ๋œ ๋ฉ”๋ชจ๋ฆฌ 4 int mWidth 3 int mHeight SpreadsheetCell** mCells Spreadsheet s1
  • 10. ๋ณต์ œ์™€ ๋Œ€์ž…์˜ ๊ด€๋ฆฌ s1๊ณผ s2 ๋‘ ๊ฐ์ฒด๊ฐ€ ์ƒ์„ฑ๋œ ์งํ›„ ๋ฉ”๋ชจ๋ฆฌ ์ƒํƒœ. ์Šคํƒ(Stack) ๋ฉ”๋ชจ๋ฆฌ ํž™(Heap) ๋ฉ”๋ชจ๋ฆฌ 4 int mWidth 3 int mHeight SpreadsheetCell** mCells Spreadsheet s2 2 int mWidth 2 int mHeight SpreadsheetCell** mCells Spreadsheet s1
  • 11. ๋ณต์ œ์™€ ๋Œ€์ž…์˜ ๊ด€๋ฆฌ ๋Œ€์ž…์ด ์‹คํ–‰๋˜๊ณ  ๋‚œ ํ›„์˜ ๋ฉ”๋ชจ๋ฆฌ ์ƒํƒœ. ์Šคํƒ(Stack) ๋ฉ”๋ชจ๋ฆฌ ํž™(Heap) ๋ฉ”๋ชจ๋ฆฌ 4 int mWidth 3 int mHeight SpreadsheetCell** mCells Spreadsheet s2 2 int mWidth 2 int mHeight SpreadsheetCell** mCells Spreadsheet s1 ์ฃผ์ธ์ด ์—†์–ด์ง„ ๋ฉ”๋ชจ๋ฆฌ! (Orphaned Memory) s1, s2์˜ mCells ํฌ์ธํ„ฐ๊ฐ€ ๊ฐ™์€ ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ๊ฐ€๋ฆฌํ‚ค๋Š” ๊ฒƒ์€ ๋ฌผ๋ก  s1์˜ mCells ํฌ์ธํ„ฐ๊ฐ€ ๊ฐ€๋ฆฌํ‚ค๊ณ  ์žˆ๋˜ ๋ฉ”๋ชจ๋ฆฌ ์˜์—ญ์ด ์ฃผ์ธ์„ ์žƒ์–ด๋ฒ„๋ฆฐ๋‹ค. ์ด๋Ÿฌํ•œ ๋ฌธ์ œ๋ฅผ ํ”ผํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” ์ขŒ๋ณ€ํ•ญ์˜ ๊ฐ์ฒด๊ฐ€ ์ฐธ์กฐํ•˜๊ณ  ์žˆ๋Š” ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ๋ฐ˜ํ™˜ํ•œ ํ›„์— ์ƒˆ๋กœ ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ์ค€๋น„ํ•ด ๊นŠ์€ ๋ณต์ œ(Deep Copy)๋ฅผ ํ•ด์•ผ ํ•œ๋‹ค.
  • 12. ๋ณต์ œ์™€ ๋Œ€์ž…์˜ ๊ด€๋ฆฌ Spreadsheet ํด๋ž˜์Šค์˜ ๋ณต์ œ ์ƒ์„ฑ์ž ์ •์˜ ๋ฐ ๊ตฌํ˜„. ํฌ์ธํ„ฐ ๋ฐ์ดํ„ฐ ๋ฉค๋ฒ„ ๋ณ€์ˆ˜ mCells์— ๋Œ€ํ•ด์„œ๋Š” ๊นŠ์€ ๋ณต์ œ๋ฅผ ํ•˜๊ธฐ ์œ„ํ•ด 2์ฐจ์› ๋ฐฐ์—ด์˜ ํฌ์ธํ„ฐ๋ฅผ ์ˆœํšŒํ•˜๋ฉฐ ๊ฐ ๋ฐฐ์—ด ํ•ญ๋ชฉ์„ ํ•˜๋‚˜์”ฉ ๋ชจ๋‘ ๋ณต์ œํ•œ๋‹ค. ๊ฐ์ฒด ์ƒ์„ฑ์„ ์œ„ํ•œ ๋ณต์‚ฌ ์ƒ์„ฑ์ž์ด๊ธฐ ๋•Œ๋ฌธ์— ์•„์ง ๊ฐ์ฒด ์ž์ฒด๊ฐ€ ์กด์žฌํ•˜์ง€ ์•Š๋Š”๋‹ค. โ†’ ๋ณต์ œํ•˜๊ธฐ ์ „์— mCells์— ๋Œ€ํ•œ ๋ฉ”๋ชจ๋ฆฌ ํ•ด์ œ๋ฅผ ํ•  ํ•„์š”๊ฐ€ ์—†๋‹ค.
  • 13. ๋ณต์ œ์™€ ๋Œ€์ž…์˜ ๊ด€๋ฆฌ Spreadsheet ํด๋ž˜์Šค์˜ ๋Œ€์ž… ์—ฐ์‚ฐ์ž ์ •์˜. ์–ด๋–ค ๊ฐ์ฒด๊ฐ€ ๋Œ€์ž… ๋Œ€์ƒ์œผ๋กœ ์›๋ณธ์„ ๊ฐ์ฒด๋กœ ๋ฐ›์•„๋“ค์ผ ๋•Œ๋Š” ์ด๋ฏธ ๊ฐ์ฒด๊ฐ€ ์ƒ์„ฑ๋˜์–ด ์žˆ๊ณ  ๊ฐ’๋„ ์ƒ์„ฑ๋œ ์ƒํƒœ์ด๋‹ค. ๋Œ€์ž… ์—ฐ์‚ฐ์ž๊ฐ€ ํ•˜๋Š” ์ผ์€ ์†Œ๋ฉธ์ž์™€ ๋ณต์ œ ์ƒ์„ฑ์ž๊ฐ€ ์—ฐ๋‹ฌ์•„ ํ˜ธ์ถœํ•˜๋Š” ๊ฒƒ๊ณผ ๋น„์Šทํ•˜๋‹ค.
  • 14. ๋ณต์ œ์™€ ๋Œ€์ž…์˜ ๊ด€๋ฆฌ Spreadsheet ํด๋ž˜์Šค์˜ ๋Œ€์ž… ์—ฐ์‚ฐ์ž ๊ตฌํ˜„. ๋จผ์ € ์ž๊ธฐ ์ž์‹ ์„ ๋Œ€์ž…ํ•˜๋Š”์ง€ ๊ฒ€์‚ฌํ•œ๋‹ค. ์ด๋Ÿฌํ•œ ์ž‘์—…์„ ํ•˜๋Š” ์ด์œ ๋Š” ์„ฑ๋Šฅ ์ตœ์ ํ™”์™€ ์˜ค๋ฅ˜๋ฅผ ๋ฐฉ์ง€ํ•˜๊ธฐ ์œ„ํ•จ์ด๋‹ค. ๋งŒ์•ฝ ์ž๊ธฐ ์ž์‹ ์ธ์ง€ ํ™•์ธํ•˜๋Š” ์ฝ”๋“œ๊ฐ€ ์—†๋‹ค๋ฉด ์ž๊ธฐ ์ž์‹ ์„ ๋Œ€์ž…ํ•˜๋Š” ์ฝ”๋“œ๊ฐ€ ์‹คํ–‰๋  ๋•Œ ํ”„๋กœ๊ทธ๋žจ์ด ์ž˜๋ชป๋œ ๋ฉ”๋ชจ๋ฆฌ ์ ‘๊ทผ์œผ๋กœ ๋น„์ •์ƒ ์ข…๋ฃŒ๋  ์ˆ˜๋„ ์žˆ๋‹ค. ์™œ๋ƒํ•˜๋ฉด ๋Œ€์ž… ๋Œ€์ƒ ๊ฐ์ฒด์—์„œ๋Š” ๋ณด์œ ํ•˜๊ณ  ์žˆ๋˜ ๋™์  ๋ฉ”๋ชจ๋ฆฌ๋“ค์„ ๋Œ€์ž…ํ•˜๊ธฐ ์ „์— ๋จผ์ € ํ•ด์ œํ•˜๋Š”๋ฐ, ๋Œ€์ƒ๊ณผ ์›๋ณธ์ด ๊ฐ™์œผ๋ฏ€๋กœ ์ด ์ˆœ๊ฐ„์— ์›๋ณธ ๊ฐ์ฒด์˜ ๋ฉ”๋ชจ๋ฆฌ๋„ ํ•ด์ œ๋˜์–ด ํฌ์ธํ„ฐ ๋ฉค๋ฒ„๊ฐ€ ๋Œ•๊ธ€๋ง ํฌ์ธํ„ฐ๊ฐ€ ๋˜์–ด ๋ฒ„๋ฆฐ๋‹ค. ๊ทธ๋ž˜์„œ ๋ณต์ œ ์ž‘์—… ์‹œ ๋Œ•๊ธ€๋ง ํฌ์ธํ„ฐ๋ฅผ ์ฐธ์กฐํ•˜๊ฒŒ ๋˜๊ณ  ์–ด๋–ค ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ• ์ง€ ์•Œ ์ˆ˜ ์—†๋‹ค.
  • 15. ๋ณต์ œ์™€ ๋Œ€์ž…์˜ ๊ด€๋ฆฌ ๋Œ€์ž… ์—ฐ์‚ฐ์ž๋ฅผ ๊ตฌํ˜„ํ•˜๊ฒŒ ๋˜๋ฉด, ์‚ฌ์‹ค์ƒ ์†Œ๋ฉธ์ž, ๋ณต์ œ ์ƒ์„ฑ์ž๊นŒ์ง€ ํ•จ๊ป˜ ๊ตฌํ˜„ํ•˜๋Š” ์…ˆ์ด ๋œ๋‹ค. ๋”ฐ๋ผ์„œ ๋Œ€์ž… ์—ฐ์‚ฐ์ž, ์†Œ๋ฉธ์ž, ๋ณต์ œ ์ƒ์„ฑ์ž๋“ค์€ ์„œ๋กœ ์—ฐ๊ด€๋œ ์ฝ”๋“œ๋ฅผ ๊ฐ€์งˆ ์ˆ˜๋ฐ–์— ์—†๋‹ค. ๋ณต์ œ ์ƒ์„ฑ์ž์™€ ๋Œ€์ž… ์—ฐ์‚ฐ์ž๋Š” ์ƒ๋‹นํžˆ ์œ ์‚ฌํ•˜๋ฏ€๋กœ, ๊ณตํ†ต์ ์ธ ์ž‘์—… ๋ถ€๋ถ„์„ ๋นผ๋‘๋ฉด ์ค‘๋ณต ์ฝ”๋“œ๋ฅผ ํ”ผํ•  ์ˆ˜ ์žˆ๋‹ค.
  • 16. ๋ณต์ œ์™€ ๋Œ€์ž…์˜ ๊ด€๋ฆฌ ํด๋ž˜์Šค์—์„œ ๋™์  ๋ฉ”๋ชจ๋ฆฌ ํ• ๋‹น์„ ์‚ฌ์šฉํ•  ๋•Œ ๋ณต์ œ์™€ ๋Œ€์ž… ๋•Œ๋ฌธ์— ๋ฐœ์ƒํ•˜๋Š” ๋ฌธ์ œ๋ฅผ ํ”ผํ•˜๋Š” ๊ฐ€์žฅ ์‰ฌ์šด ๋ฐฉ๋ฒ•์€ ๋ณต์ œ์™€ ๋Œ€์ž…์ด ๋ฐœ์ƒํ•˜์ง€ ์•Š๋„๋ก ๋ง‰๋Š” ๊ฒƒ์ด๋‹ค. operator=๊ณผ ๋ณต์ œ ์ƒ์„ฑ์ž๋ฅผ private๋กœ ์„ ์–ธํ•˜๋ฉด ์‰ฝ๊ฒŒ ๋ง‰์„ ์ˆ˜ ์žˆ๋‹ค.
  • 17. ์—ฌ๋Ÿฌ ์ข…๋ฅ˜์˜ ๋ฐ์ดํ„ฐ ๋ฉค๋ฒ„ ๋ณ€์ˆ˜ STATIC ๋ฐ์ดํ„ฐ ๋ฉค๋ฒ„, CONST ๋ฐ์ดํ„ฐ ๋ฉค๋ฒ„, ์ฐธ์กฐํ˜• ๋ฐ์ดํ„ฐ ๋ฉค๋ฒ„, CONST ์ฐธ์กฐํ˜• ๋ฐ์ดํ„ฐ ๋ฉค๋ฒ„
  • 18. STATIC ๋ฐ์ดํ„ฐ ๋ฉค๋ฒ„ static ๋ฐ์ดํ„ฐ ๋ฉค๋ฒ„๋Š” C์—์„œ์˜ ์ „์—ญ ๋ณ€์ˆ˜์™€ ์œ ์‚ฌํ•˜๋‚˜ ํŠน์ • ํด๋ž˜์Šค์— ์ข…์†๋œ๋‹ค๋Š” ์ ์ด ๋‹ค๋ฅด๋‹ค. C++11์—์„œ๋Š” constexpr์„ ํ†ตํ•ด static ๋ฉค๋ฒ„ ๋ณ€์ˆ˜๋ฅผ ์„ ์–ธ๊ณผ ๋™์‹œ์— ์ดˆ๊ธฐํ™”ํ•  ์ˆ˜ ์žˆ๊ณ , ์ถ”๊ฐ€์ ์ธ ์ž‘์—… ์—†์ด ๋ฐ”๋กœ static ๋ณ€์ˆ˜์˜ ์‚ฌ์šฉ์ด ๊ฐ€๋Šฅํ•˜๋‹ค. Visual Studio 2013์—์„œ๋Š” constexpr ํ‚ค์›Œ๋“œ๋ฅผ ์ง€์›ํ•˜์ง€ ์•Š๋Š”๋‹ค. (gcc 4.8.1์€ ์ง€์›, โ€“std=c++11 ์˜ต์…˜ ํ•„์š”) ์ž์„ธํ•œ ์‚ฌํ•ญ์€ N2756 ๋ฌธ์„œ*๋ฅผ ์ฐธ์กฐ C++11์ด ์ง€์›๋˜์ง€ ์•Š๋Š” ํ™˜๊ฒฝ์—์„œ๋Š” cpp ํŒŒ์ผ์— sCounter ๋ณ€์ˆ˜์˜ ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ํ• ๋‹นํ•˜๊ณ  ์ดˆ๊ธฐํ™”ํ•ด์•ผ ํ•œ๋‹ค. ๊ฐ ์Šคํ”„๋ ˆ๋“œ์‹œํŠธ๋งˆ๋‹ค ์ˆœ๋ฒˆ์„ ๋งค๊ธฐ๋Š” ๋ณ€์ˆ˜ * http://www.open-std.org/JTC1/SC22/WG21/docs/papers/2008/n2756.htm
  • 19. STATIC ๋ฐ์ดํ„ฐ ๋ฉค๋ฒ„ ๋ฉ”์„œ๋“œ ์•ˆ์—์„œ๋Š” static ๋ฉค๋ฒ„๋ฅผ ์ผ๋ฐ˜ ๋ฉค๋ฒ„ ๋ณ€์ˆ˜์™€ ๊ฐ™์€ ๋ฐฉ์‹์œผ๋กœ ์ด์šฉํ•  ์ˆ˜ ์žˆ๋‹ค. ๊ฐ์ฒด๊ฐ€ ์ƒ์„ฑ๋  ๋•Œ ๋ณต์ œ ์ƒ์„ฑ์ž๊ฐ€ ์ด์šฉ๋  ์ˆ˜๋„ ์žˆ๋‹ค๋Š” ๊ฒƒ์„ ์žŠ์ง€ ๋ง์ž. ๋”ฐ๋ผ์„œ ๊ณ ์œ  ์ˆœ๋ฒˆ ํ• ๋‹น ์ž‘์—…์„ ํ•œ๋‹ค. ๋Œ€์ž… ์—ฐ์‚ฐ์ž๋Š” ๊ณ ์œ  ์ˆœ๋ฒˆ ํ• ๋‹น์ด ํ•„์š”์—†๋‹ค. ๊ณ ์œ  ์ˆœ๋ฒˆ์€ ๊ฐ์ฒด ์ƒ์„ฑ ์‹œ์ ์— ํ•œ ๋ฒˆ ํ• ๋‹น๋œ ํ›„ ๋ณ€๊ฒฝ๋˜์ง€ ์•Š์•„์•ผ ํ•œ๋‹ค. ๋ณต์ œ ์ƒ์„ฑ์ž ์ƒ์„ฑ์ž
  • 20. CONST ๋ฐ์ดํ„ฐ ๋ฉค๋ฒ„ ํด๋ž˜์Šค์˜ ๋ฐ์ดํ„ฐ ๋ฉค๋ฒ„๋ฅผ const๋กœ ์„ ์–ธํ•˜๋ฉด, ์ƒ์„ฑ ์‹œ์ ์— ์ดˆ๊นƒ๊ฐ’์„ ๋ถ€์—ฌํ•œ ๋‹ค์Œ ๋”๋Š” ๊ฐ’์„ ๋ณ€๊ฒฝํ•  ์ˆ˜ ์—†๊ฒŒ ๋œ๋‹ค. ๊ทธ๋Ÿฐ๋ฐ ๊ฐ์ฒด ์ˆ˜์ค€์—์„œ ์ƒ์ˆซ๊ฐ’์„ ๋ณด์œ ํ•˜๋Š” ๊ฒƒ์€ ๋Œ€๋ถ€๋ถ„ ๋ฉ”๋ชจ๋ฆฌ ๋‚ญ๋น„์ด๋‹ค. ์ด๋•Œ๋Š” static const ๋ฉค๋ฒ„๋ฅผ ์ด์šฉํ•ด์„œ ๊ฐ์ฒด ๊ฐ„์— ์ƒ์ˆซ๊ฐ’์„ ๊ณต์œ ํ•˜๋„๋ก ํ•  ์ˆ˜ ์žˆ๋‹ค.
  • 21. ์ฐธ์กฐํ˜• ๋ฐ์ดํ„ฐ ๋ฉค๋ฒ„ ์Šคํ”„๋ ˆ๋“œ์‹œํŠธ ํ”„๋กœ๊ทธ๋žจ์„ ์™„์„ฑํ•˜๋ ค๋ฉด Spreadsheet, SpreadsheetCell ํด๋ž˜์Šค๊ฐ€ SpreadsheetApplication ํด๋ž˜์Šค์— ํ†ตํ•ฉ๋˜์–ด์•ผ ํ•œ๋‹ค. ๊ทธ๋Ÿฐ๋ฐโ€ฆ SpreadsheetCell Spreadsheet SpreadsheetApplication Spreadsheet SpreadsheetApplication SpreadsheetApplication์€ ๋ณต์ˆ˜์˜ Spreadsheet๋ฅผ ๊ด€๋ฆฌํ•˜๊ธฐ ๋•Œ๋ฌธ์— Spreadsheet ํด๋ž˜์Šค๋ฅผ ์•Œ์•„์•ผ๋งŒ ํ•œ๋‹ค. ๋”ฐ๋ผ์„œ SpreadsheetApplication์„ ์ •์˜ํ•˜๊ธฐ ์ „์— Spreadsheet๊ฐ€ ์ •์˜๋˜์–ด ์žˆ์–ด์•ผ ํ•œ๋‹ค. Spreadsheet ํด๋ž˜์Šค๋„ SpreadsheetApplication ํด๋ž˜์Šค์™€ ์ปค๋ฎค๋‹ˆ์ผ€์ด์…˜ํ•ด์•ผ ํ•˜๊ธฐ ๋–„๋ฌธ์— SpreadsheetApplication์„ ์•Œ์•„์•ผ ํ•œ๋‹ค. ๋”ฐ๋ผ์„œ Spreadsheet์„ ์ •์˜ํ•˜๊ธฐ ์ „์— SpreadsheetApplication์ด ์ •์˜๋˜์–ด ์žˆ์–ด์•ผ ํ•œ๋‹ค.
  • 22. ์ฐธ์กฐํ˜• ๋ฐ์ดํ„ฐ ๋ฉค๋ฒ„ #include๋กœ๋Š” ํ•ด๊ฒฐํ•  ๋ฐฉ๋ฒ•์ด ์—†๋‹ค. ์ด์— ๋Œ€ํ•œ ํ•ด๊ฒฐ์ฑ…์œผ๋กœ ํฌ์›Œ๋“œ ์„ ์–ธ(Forward Declaration)์ด ์žˆ๋‹ค. ๊ต์ฐจ ์ฐธ์กฐ๋˜๋Š” ํด๋ž˜์Šค์˜ ํ—ค๋” ํŒŒ์ผ ์ค‘ ์–ด๋Š ํ•œ ์ชฝ์— ์ƒ๋Œ€ํŽธ ํด๋ž˜์Šค์˜ ํ—ค๋”๋ฅผ ์ธํด๋ฃจ๋“œํ•˜๋Š” ๋Œ€์‹  ํฌ์›Œ๋“œ ์„ ์–ธ์„ ํ•ด๋‘๋ฉด ์ปดํŒŒ์ผ๋Ÿฌ๊ฐ€ ๋‚˜์ค‘์— ํ•ด๋‹น ์ •์˜๋ฅผ ์ฐพ์•„๋‹ค๊ฐ€ ํƒ€์ž… ๋งค์นญ์„ ํ•œ๋‹ค.
  • 23. ์ฐธ์กฐํ˜• ๋ฐ์ดํ„ฐ ๋ฉค๋ฒ„ ์ฐธ์กฐํ˜• ๋ณ€์ˆ˜๋Š” ์ƒ์„ฑ๊ณผ ๋™์‹œ์— ๋‹ค๋ฅธ ๊ฐ์ฒด๋ฅผ ์ฐธ์กฐํ•˜๋„๋ก ์ดˆ๊ธฐํ™”ํ•ด์•ผ ํ•œ๋‹ค. ํ•œ ๋ฒˆ ์ดˆ๊ธฐํ™”๋˜๊ณ  ๋‚˜๋ฉด ๋‹ค๋ฅธ ๊ฐ’์œผ๋กœ ๋ฐ”๊ฟ€ ์ˆ˜๊ฐ€ ์—†๋‹ค.
  • 24. CONST ์ฐธ์กฐํ˜• ๋ฐ์ดํ„ฐ ๋ฉค๋ฒ„ const ์ฐธ์กฐํ˜• ๋ณ€์ˆ˜๋กœ ์ฐธ์กฐ๋œ ๊ฐ์ฒด๋Š” const ๋ฉ”์„œ๋“œ๋งŒ ์ด์šฉํ•  ์ˆ˜ ์žˆ๋‹ค. ๋งŒ์•ฝ const ์ฐธ์กฐ๋œ ๊ฐ์ฒด์—์„œ const๊ฐ€ ์•„๋‹Œ ๋ฉ”์„œ๋“œ๋ฅผ ํ˜ธ์ถœํ•˜๋ฉด ์ปดํŒŒ์ผ ์—๋Ÿฌ๊ฐ€ ๋ฐœ์ƒํ•œ๋‹ค. static ์ฐธ์กฐํ˜• ๋ฉ”๋ฒ„๋‚˜ static const ์ฐธ์กฐํ˜• ๋ฉค๋ฒ„๋„ ์„ ์–ธํ•  ์ˆ˜ ์žˆ์ง€๋งŒ ํŠน๋ณ„ํ•œ ์˜๋ฏธ๋Š” ์—†๋‹ค.
  • 25. ๋ฉ”์„œ๋“œ์˜ ์ข…๋ฅ˜ STATIC ๋ฉ”์„œ๋“œ, CONST ๋ฉ”์„œ๋“œ, ๋ฉ”์„œ๋“œ ์˜ค๋ฒ„๋กœ๋”ฉ, ๋””ํดํŠธ ํŒŒ๋ผ๋ฏธํ„ฐ, INLINE ๋ฉ”์„œ๋“œ
  • 26. STATIC ๋ฉ”์„œ๋“œ static ๋ฉ”์„œ๋“œ์˜ ์„ ์–ธ ๋ฐฉ๋ฒ•์€ static ๋ฐ์ดํ„ฐ ๋ฉค๋ฒ„์™€ ๊ฐ™๋‹ค. (ํŠน์ • ํด๋ž˜์Šค์˜ ๋ชจ๋“  ๊ฐ์ฒด์— ๊ณตํ†ต์ ์œผ๋กœ ์ ์šฉ) static ๋ฉ”์„œ๋“œ๋Š” ๊ฐ์ฒด์— ๋ฌถ์ด์ง€ ์•Š๊ธฐ ๋•Œ๋ฌธ์— โ€œ๊ฐ์ฒด์— ๋ณ€๊ฒฝ์„ ๊ฐ€ํ•˜์ง€ ์•Š๋Š”๋‹ค.โ€๋ผ๋Š” ์‹œ๋งจํ‹ฑ์„ ์ ์šฉํ•  ์ˆ˜ ์—†๋‹ค. ๋”ฐ๋ผ์„œ static ๋ฉ”์„œ๋“œ๋ฅผ ์„ ์–ธํ•˜๋ ค๋ฉด const๋ฅผ ๋นผ์•ผ ํ•œ๋‹ค.
  • 27. CONST ๋ฉ”์„œ๋“œ ๋ฉ”์‹œ์ง€๋ฅผ const๋กœ ์„ ์–ธํ•˜๋ฉด ๋ฉ”์„œ๋“œ ํ˜ธ์ถœ ๋•Œ๋ฌธ์— ๊ฐ์ฒด์˜ ๋ฐ์ดํ„ฐ ๊ฐ’์ด ๋ฐ”๋€Œ์ง€ ์•Š๋Š”๋‹ค๋Š” ๊ฒƒ์„ ๋ณด์ฆํ•ด์ค€๋‹ค. ๋งŒ์•ฝ const๋กœ ์„ ์–ธํ•œ ๋ฉ”์„œ๋“œ ์•ˆ์—์„œ ๊ฐ์ฒด์˜ ๋ฐ์ดํ„ฐ ๋ฉค๋ฒ„๋ฅผ ๋ณ€๊ฒฝํ•˜๋ ค ํ•˜๋ฉด ์ปดํŒŒ์ผ๋Ÿฌ๊ฐ€ ์˜ค๋ฅ˜ ๋ฉ”์‹œ์ง€๋ฅผ ์ถœ๋ ฅํ•  ์ˆ˜ ์žˆ๋‹ค. const ๋ฉ”์„œ๋“œ์˜ ๋™์ž‘ ๋ฐฉ์‹์€ ๋ฉ”์„œ๋“œ ๋‚ด์—์„œ ์ ‘๊ทผํ•˜๋Š” ๋ชจ๋“  ๋ฐ์ดํ„ฐ ๋ฉค๋ฒ„๋ฅผ const๋กœ ์ทจ๊ธ‰ํ•˜๋Š” ๋ฐฉ๋ฒ•์œผ๋กœ ๊ตฌํ˜„๋œ๋‹ค.
  • 28. CONST ๋ฉ”์„œ๋“œ const๊ฐ€ ์•„๋‹Œ ๊ฐ์ฒด์— ๋Œ€ํ•ด์„œ๋Š” const ์—ฌ๋ถ€์™€ ๊ด€๊ณ„์—†์ด ๋ชจ๋“  ๋ฉ”์„œ๋“œ๋ฅผ ํ˜ธ์ถœํ•  ์ˆ˜ ์žˆ๋‹ค. ํ•˜์ง€๋งŒ const ๊ฐ์ฒด์— ๋Œ€ํ•ด์„œ๋Š” const ๋ฉ”์„œ๋“œ๋งŒ ํ˜ธ์ถœํ•  ์ˆ˜ ์žˆ๋‹ค. ๊ฐ€๋Šฅํ•˜๋‹ค๋ฉด ๊ฐ์ฒด๋ฅผ ๋ณ€๊ฒฝํ•˜์ง€ ์•Š๋Š” ๋ชจ๋“  ๋ฉ”์„œ๋“œ์— const ์ œํ•œ์ž๋ฅผ ์ ์šฉํ•ด const ๊ฐ์ฒด๋ฅผ ํ˜ธ์ถœํ•˜๋Š” ๊ฒƒ์ด ๋ฐ”๋žŒ์งํ•˜๋‹ค.
  • 29. CONST ๋ฉ”์„œ๋“œ ๋ฉ”์„œ๋“œ๊ฐ€ ๊ฐ์ฒด์˜ ํŠน์ • ๋ฐ์ดํ„ฐ ๋ฉค๋ฒ„๋ฅผ ๋ณ€๊ฒฝํ•˜๊ธฐ๋Š” ํ•˜์ง€๋งŒ ๋…ผ๋ฆฌ์ ์œผ๋กœ๋Š” const์ธ ๊ฒฝ์šฐ๊ฐ€ ์žˆ๋‹ค. ์Šคํ”„๋ ˆ๋“œ์‹œํŠธ ํ”„๋กœ๊ทธ๋žจ์˜ ์‚ฌ์šฉ์ž ์ด์šฉ ์„ฑํ–ฅ์„ ํ”„๋กœํŒŒ์ผ๋ง ํ•ด๋ณด๊ธฐ ์œ„ํ•ด ์ ‘๊ทผ ์นด์šดํ„ฐ๋ฅผ ๊ตฌํ˜„ํ–ˆ๋‹ค๊ณ  ํ•˜์ž. ์ด ์นด์šดํ„ฐ๋Š” ๊ฐ์ฒด์˜ ๋ฐ์ดํ„ฐ์— ๋ณ€ํ™”๋ฅผ ์ฃผ์ง€ ์•Š์ง€๋งŒ, ์ปดํŒŒ์ผ๋Ÿฌ์—์„œ๋Š” ๊ฐ์ฒด์˜ ๋ฐ์ดํ„ฐ ๋ฉค๋ฒ„๋ฅผ ๋ณ€๊ฒฝํ•˜๋Š” ํ–‰์œ„์™€ ๊ตฌ๋ณ„์ด ์•ˆ๋œ๋‹ค. mutable ์†์„ฑ์„ ์นด์šดํ„ฐ ๋ฉค๋ฒ„ ๋ณ€์ˆ˜์— ์ ์šฉํ•˜๋ฉด ํ•ด๋‹น ๋ณ€์ˆ˜์˜ ๋ณ€๊ฒฝ์ด ๋ฉ”์„œ๋“œ์˜ const์— ์˜ํ–ฅ์„ ๋ฏธ์น˜์ง€ ์•Š๋Š” ๊ฒƒ์œผ๋กœ ๊ฐ„์ฃผํ•œ๋‹ค.
  • 30. ๋ฉ”์„œ๋“œ ์˜ค๋ฒ„๋กœ๋”ฉ ์•ž์„œ ํด๋ž˜์Šค ์ƒ์„ฑ์ž๋Š” ์ด๋ฆ„์ด ๊ฐ™๋”๋ผ๋„ ํŒŒ๋ผ๋ฏธํ„ฐ์˜ ํƒ€์ž…์ด๋‚˜ ๊ฐœ์ˆ˜๊ฐ€ ๋‹ค๋ฅด๋‹ค๋ฉด ์—ฌ๋Ÿฌ ๊ฐœ๋ฅผ ์ •์˜ํ•  ์ˆ˜ ์žˆ์—ˆ๋‹ค. ๊ทธ๋Ÿฐ๋ฐ ์ด๋Ÿฌํ•œ ์ •์˜ ๋ฐฉ์‹์€ ์ผ๋ฐ˜ ๋ฉ”์„œ๋“œ๋‚˜ ํ•จ์ˆ˜์—๋„ ๊ทธ๋Œ€๋กœ ์ ์šฉ๋œ๋‹ค. ์ด๋ฆ„์ด ๊ฐ™์€ ๋ฉ”์„œ๋“œ, ํ•จ์ˆ˜๋ฅผ ํŒŒ๋ผ๋ฏธํ„ฐ๋งŒ ๋‹ฌ๋ฆฌํ•˜์—ฌ ์ •์˜ํ•˜๋Š” ๊ฒƒ์„ ์˜ค๋ฒ„๋กœ๋”ฉ(Overloading)์ด๋ผ ํ•œ๋‹ค. ์ปดํŒŒ์ผ๋Ÿฌ๊ฐ€ set() ๋ฉ”์„œ๋“œ์˜ ํ˜ธ์ถœ์„ ๋งŒ๋‚˜๋ฉด ์ธ์ž์˜ ๋ฐ์ดํ„ฐ ํƒ€์ž…๊ณผ ๊ฐœ์ˆ˜๋ฅผ ๋ณด๊ณ  ์ ํ•ฉํ•œ ๋ฉ”์„œ๋“œ๋กœ ๋งคํ•‘ํ•ด์ค€๋‹ค. ์ด๋Ÿฌํ•œ ๋ฉ”์ปค๋‹ˆ์ฆ˜์„ ์˜ค๋ฒ„๋กœ๋“œ ์ง€์ •(Overload Resolution)์ด๋ผ๊ณ  ํ•œ๋‹ค. ๋ฐ์ดํ„ฐ ํƒ€์ž… : int ๊ฐœ์ˆ˜ : 1๊ฐœ ๋ฐ์ดํ„ฐ ํƒ€์ž… : string ๊ฐœ์ˆ˜ : 1๊ฐœ
  • 31. ๋ฉ”์„œ๋“œ ์˜ค๋ฒ„๋กœ๋”ฉ C++์—์„œ๋Š” ํŒŒ๋ผ๋ฏธํ„ฐ์— ์ฐจ์ด๊ฐ€ ์—†์ด ๋ฆฌํ„ด ํƒ€์ž…์œผ๋งŒ ๋‹ค๋ฅธ ๋ฉ”์„œ๋“œ๋‚˜ ํ•จ์ˆ˜์— ๋Œ€ํ•ด์„œ ์˜ค๋ฒ„๋กœ๋”ฉ์„ ํ—ˆ์šฉํ•˜์ง€ ์•Š๋Š”๋‹ค. ์™œ๋ƒํ•˜๋ฉด ๋ฆฌํ„ด ํƒ€์ž…์˜ ์ฐจ์ด๋งŒ์œผ๋กœ๋Š” ์ปดํŒŒ์ผ๋Ÿฌ๊ฐ€ ์˜ค๋ฒ„๋กœ๋“œ ์ง€์ •์„ ์ง€์ •ํ•  ์ˆ˜ ์—†๋Š” ์ƒํ™ฉ์ด ๋งŽ๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค. const ์ œํ•œ์ž์— ๊ธฐ๋ฐ˜ํ•œ ์˜ค๋ฒ„๋กœ๋”ฉ๋„ ๊ฐ€๋Šฅํ•˜๋‹ค. ์ด๋ฆ„๊ณผ ํŒŒ๋ผ๋ฏธํ„ฐ๊ฐ€ ๊ฐ™์€ ๋‘ ๋ฉ”์„œ๋“œ ์ค‘ ์–ด๋Š ํ•œ ์ชฝ๋งŒ const๋ผ๋ฉด, ๊ทธ ๋ฉ”์„œ๋“œ๋ฅผ ํ˜ธ์ถœํ•œ ๊ฐ์ฒด์˜ ํƒ€์ž…์ด const๋ƒ ์•„๋‹ˆ๋ƒ์— ๋งž์ถฐ์„œ ์ปดํŒŒ์ผ๋Ÿฌ๊ฐ€ ํ˜ธ์ถœ๋  ๋ฉ”์„œ๋“œ๋ฅผ ์ง€์ •ํ•  ์ˆ˜ ์žˆ๋‹ค.
  • 32. ๋ฉ”์„œ๋“œ ์˜ค๋ฒ„๋กœ๋”ฉ C++11์—์„œ๋Š” ํŠน์ • ํŒŒ๋ผ๋ฏธํ„ฐ ํƒ€์ž…์˜ ์˜ค๋ฒ„๋กœ๋“œ ๋ฉ”์„œ๋“œ๊ฐ€ ์‚ฌ์šฉ๋˜์ง€ ์•Š๋„๋ก ๋ช…์‹œ์ ์œผ๋กœ ์‚ญ์ œํ•  ์ˆ˜๋„ ์žˆ๋‹ค. c.foo(1); double ํƒ€์ž… ๊ฐ’ 1.2์„ ์ •์ˆ˜ 1๋กœ ํƒ€์ž… ์บ์ŠคํŒ…
  • 33. ๋””ํดํŠธ ํŒŒ๋ผ๋ฏธํ„ฐ ๋””ํดํŠธ ํŒŒ๋ผ๋ฏธํ„ฐ๋Š” ํ•จ์ˆ˜๋‚˜ ๋ฉ”์„œ๋“œ์˜ ์›ํ˜•์„ ์„ ์–ธํ•  ๋•Œ ๊ฐ ํŒŒ๋ผ๋ฏธํ„ฐ์— ๋””ํดํŠธ ๊ฐ’์„ ์ง€์ •ํ•  ์ˆ˜ ์žˆ๋‹ค. ๋งŒ์•ฝ ์‚ฌ์šฉ์ž๊ฐ€ ํ•ด๋‹น ์ธ์ž๋ฅผ ์ง์ ‘ ์ œ๊ณตํ•˜๋ฉด ๋””ํดํŠธ ๊ฐ’์€ ๋ฌด์‹œ๋˜๋ฉฐ, ๊ณต๋ž€์œผ๋กœ ํ•˜๋ฉด ๋””ํดํŠธ ๊ฐ’์ด ์ž๋™์œผ๋กœ ์ ์šฉ๋œ๋‹ค. ๋””ํดํŠธ ํŒŒ๋ผ๋ฏธํ„ฐ๋Š” ๊ฐ€์žฅ ์˜ค๋ฅธ์ชฝ ํŒŒ๋ผ๋ฏธํ„ฐ๋ถ€ํ„ฐ ์‹œ์ž‘ํ•ด ํŒŒ๋ผ๋ฏธํ„ฐ ๊ฑด๋„ˆ๋œ€ ์—†์ด ์—ฐ์†์ ์œผ๋กœ๋งŒ ์ ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค. s1(theApp, 100, 100) s1(theApp, 5, 100) s1(theApp, 5, 6)
  • 34. INLINE ๋ฉ”์„œ๋“œ C++์—์„œ๋Š” ๋ฉ”์„œ๋“œ๋‚˜ ํ•จ์ˆ˜๋ฅผ ๋ณ„๋„์˜ ๋ถ„๋ฆฌ๋œ ์ฝ”๋“œ ๋ธ”๋ก์œผ๋กœ ํ˜ธ์ถœํ•˜๋Š” ๋Œ€์‹ , ํ˜ธ์ถœ ์ง€์ ์— ๋ฐ”๋กœ ๋ฉ”์„œ๋“œ๋‚˜ ํ•จ์ˆ˜์˜ ๋ฐ”๋””๋ฅผ ์˜ฎ๊ฒจ ๋„ฃ์–ด ํ˜ธ์ถœ ์˜ค๋ฒ„ํ—ค๋“œ๋ฅผ ์ค„์ด๋Š” ๋ฐฉ๋ฒ•์„ ์ œ๊ณตํ•œ๋‹ค.์ด๋Ÿฌํ•œ ๋ฐฉ๋ฒ•์„ ์ธ๋ผ์ด๋‹(Inlining)์ด๋ผ ํ•œ๋‹ค. inline์ด ์ œ๋Œ€๋กœ ๋™์ž‘ํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” ํ•ด๋‹น ๋ฉ”์„œ๋“œ, ํ•จ์ˆ˜์˜ ๋ฐ”๋”” ๋‚ด์šฉ์„ ํ•ด๋‹น ์ฝ”๋“œ์˜ ์ปดํŒŒ์ผ ์‹œ์ ์— ๊ฐ€์ง€๊ณ  ์žˆ์–ด์•ผ๋งŒ ํ•œ๋‹ค. ์ด ๋•Œ๋ฌธ์— inline ๋ฉ”์„œ๋“œ, ํ•จ์ˆ˜๋Š” .cpp ํŒŒ์ผ์ด ์•„๋‹Œ .h ํ—ค๋” ํŒŒ์ผ์—์„œ ์ •์˜๋ฅผ ๊ฐ€์ง„๋‹ค.
  • 35. INLINE ๋ฉ”์„œ๋“œ C++๋Š” inline ํ‚ค์›Œ๋“œ๋ฅผ ์‚ฌ์šฉํ•˜์ง€ ์•Š๊ณ ๋„ ๋ฉ”์„œ๋“œ๋ฅผ ์ธ๋ผ์ด๋‹ํ•  ์ˆ˜ ์žˆ๋Š” ๋ฐฉ๋ฒ•์„ ์ œ๊ณตํ•œ๋‹ค. ๋ฉ”์„œ๋“œ์˜ ๊ตฌํ˜„๋ถ€๋ฅผ ํด๋ž˜์Šค ์ •์˜ ํ›„์— ๋”ฐ๋กœ ๋งŒ๋“œ๋Š” ๋Œ€์‹ , ์•ˆ์—์„œ ๋ฐ”๋กœ ๊ตฌํ˜„๋ถ€๋ฅผ ์ •์˜ํ•˜๋ฉด ๋œ๋‹ค. ๋‹ค๋งŒ, inline์œผ๋กœ ์„ ์–ธํ–ˆ๋”๋ผ๋„ ์‹ค์ œ๋กœ ์ธ๋ผ์ด๋‹๋ ์ง€ ์•ˆ๋ ์ง€๋Š” ์ƒํ™ฉ์— ๋”ฐ๋ผ ๋‹ค๋ฅด๋‹ค. ์ปดํŒŒ์ผ๋Ÿฌ๋Š” ์ž‘์€ ํฌ๊ธฐ์˜ ๋ฉ”์„œ๋“œ, ํ•จ์ˆ˜๋งŒ ์ธ๋ผ์ด๋‹ํ•œ๋‹ค. ๋งŒ์•ฝ ์ ์ ˆํ•˜์ง€ ์•Š์€ ๋ฉ”์„œ๋“œ, ํ•จ์ˆ˜๋ฅผ ์ธ๋ผ์ด๋‹ํ•˜๋ ค ํ•˜๋ฉด ์ปดํŒŒ์ผ๋Ÿฌ๊ฐ€ ๋ฌด์‹œํ•ด ๋ฒ„๋ฆฐ๋‹ค.
  • 37. ์ค‘์ฒฉ๋œ ํด๋ž˜์Šค ํด๋ž˜์Šค ์ •์˜๊ฐ€ ๋ฉ”์„œ๋“œ๋‚˜ ๋ฐ์ดํ„ฐ ๋ฉค๋ฒ„๋งŒ ๋‹ด์„ ์ˆ˜ ์žˆ๋Š” ๊ฒƒ์€ ์•„๋‹ˆ๋‹ค. ํด๋ž˜์Šค ์ •์˜์—๋Š” struct, typedef, enum๋„ ํฌํ•จ๋  ์ˆ˜ ์žˆ๋‹ค. ๋‹จ, public์œผ๋กœ ์„ ์–ธ๋˜์–ด ์žˆ์–ด์•ผ ํ•œ๋‹ค. ํด๋ž˜์Šค ์•ˆ์— ๋˜ ๋‹ค๋ฅธ ํด๋ž˜์Šค๋ฅผ ์ •์˜ํ•˜๋Š” ๊ฒƒ๋„ ๊ฐ€๋Šฅํ•˜๋‹ค.
  • 38. ์ค‘์ฒฉ๋œ ํด๋ž˜์Šค SpreadsheetCell ํด๋ž˜์Šค๋ฅผ ์ด์šฉํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” ์Šค์ฝ”ํ”„ ์ง€์ • ์—ฐ์‚ฐ์ž์— Spreadsheet::์„ ๋ถ™์—ฌ์•ผ ํ•œ๋‹ค. ์ด๋Ÿฌํ•œ ๋ฌธ๋ฒ•์€ ์ฝ”๋“œ๋ฅผ ์ง€์ €๋ถ„ํ•˜๊ฒŒ ๋งŒ๋“ ๋‹ค. ์ด ๋•Œ๋Š” typedef๋ฅผ ์ด์šฉํ•ด ์ถ•์•ฝํ•ด์„œ ์‚ฌ์šฉํ•œ๋‹ค.
  • 39. ํด๋ž˜์Šค ์ข…์† ๋‚˜์—ดํ˜• ๋ฐ์ดํ„ฐ ํƒ€์ž…
  • 40. ํด๋ž˜์Šค ์ข…์† ๋‚˜์—ดํ˜• ๋ฐ์ดํ„ฐ ํƒ€์ž… ์ƒ์ˆซ๊ฐ’๋“ค์„ ์ •์˜ํ•ด์•ผ ํ•œ๋‹ค๋ฉด #define ๋Œ€์‹  ๋‚˜์—ดํ˜• ํƒ€์ž…์„ ์ด์šฉํ•˜๋Š” ๊ฒƒ์ด ์ข‹๋‹ค. #define ์ƒ์ˆ˜๋ฅผ ์ด์šฉํ•˜๋ฉด ์ƒ‰์ƒ ๋ณ€์ˆ˜์˜ ํƒ€์ž…์„ int๋กœ ํ•  ์ˆ˜ ๋ฐ–์— ์—†๋‹ค. ๊ทธ๋Ÿฌ๋ฉด ์ƒ‰์ƒ์œผ๋กœ ์ •์˜๋˜์ง€ ์•Š์€ ์ƒ์ˆซ๊ฐ’์ด ์„ค์ •๋  ๊ฐ€๋Šฅ์„ฑ์ด ์žˆ์–ด ์ด์— ๋Œ€ํ•œ ๊ฒ€์‚ฌ๋ฅผ ๋Ÿฐํƒ€์ž„์— ๋ณ„๋„๋กœ ํ•ด์•ผ ํ•œ๋‹ค. ๋ฐ˜๋ฉด์— ๋‚˜์—ดํ˜• ํƒ€์ž…์„ ์ด์šฉํ•˜๋ฉด ์ปดํŒŒ์ผ๋Ÿฌ๊ฐ€ ๋นŒ๋“œ ํƒ€์ž„์— ์ž˜๋ชป๋œ ์ƒ์ˆ˜์˜ ์ด์šฉ์„ ๊ฒ€์‚ฌํ•ด์ฃผ์–ด ๋” ํšจ์œจ์ ์ด๊ณ  ์•ˆ์ „ํ•˜๋‹ค.
  • 42. FRIEND ์†์„ฑ friend ์„ค์ •์„ ์ด์šฉํ•˜๋ฉด ๋‹ค๋ฅธ ํด๋ž˜์Šค ๋˜๋Š” ๋‹ค๋ฅธ ํด๋ž˜์Šค์˜ ๋ฉ”์„œ๋“œ์—์„œ private๋‚˜ protected๋กœ ์„ ์–ธ๋œ ๋ฉค๋ฒ„ ๋ฐ ๋ฉ”์„œ๋“œ์— ์ ‘๊ทผํ•  ์ˆ˜ ์žˆ๋‹ค. friend ์„ ์–ธ์€ ๊ถŒํ•œ์„ ์—ด์–ด์ค„ ํด๋ž˜์Šค์—์„œ๋งŒ ํ•  ์ˆ˜ ์žˆ๋‹ค. ์ฆ‰, ๋‹ค๋ฅธ ํด๋ž˜์Šค์— ๋Œ€ํ•ด ์ ‘๊ทผ ๊ถŒํ•œ์„ ์š”์ฒญํ•˜๋Š” ํด๋ž˜์Šค ๋˜๋Š” ๋ฉ”์„œ๋“œ ์Šค์Šค๋กœ ๋‹ค๋ฅธ ํด๋ž˜์Šค์˜ friend ์„ ์–ธ์„ ํ•  ์ˆ˜๋Š” ์—†๋‹ค. friend๋Š” ๋‚จ์šฉ๋˜๊ธฐ ์‰ฝ๋‹ค. friend๋ฅผ ์ด์šฉํ•˜๋ฉด ๋‚ด๋ถ€ ๊ตฌ์กฐ๋ฅผ ๋‹ค๋ฅธ ํด๋ž˜์Šค๋‚˜ ํ•จ์ˆ˜์— ๋…ธ์ถœํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์ถ”์ƒํ™” ์›์น™์ด ํ›ผ์†๋œ๋‹ค. ์ด ๋•Œ๋ฌธ์— ์—ฐ์‚ฐ์ž ์˜ค๋ฒ„๋กœ๋”ฉ๊ณผ ๊ฐ™์ด ๋ถˆ๊ฐ€ํ”ผํ•œ ์ƒํ™ฉ์—์„œ๋งŒ ์ด์šฉํ•˜๋Š” ๊ฒƒ์ด ๋ฐ”๋žŒ์งํ•˜๋‹ค.
  • 43. ์—ฐ์‚ฐ์ž ์˜ค๋ฒ„๋กœ๋”ฉ SPREADSHEETCELL์— ๋ง์…ˆ ๊ธฐ๋Šฅ ๊ตฌํ˜„, ์‚ฐ์ˆ  ์—ฐ์‚ฐ์ž์˜ ์˜ค๋ฒ„๋กœ๋”ฉ, ๋น„๊ต ์—ฐ์‚ฐ์ž์˜ ์˜ค๋ฒ„๋กœ๋”ฉ
  • 44. SPREADSHEETCELL์— ๋ง์…ˆ ๊ธฐ๋Šฅ ๊ตฌํ˜„ 1. add ๋ฉ”์„œ๋“œ
  • 45. SPREADSHEETCELL์— ๋ง์…ˆ ๊ธฐ๋Šฅ ๊ตฌํ˜„ ๊ฐ’์— ์˜ํ•œ ์ „๋‹ฌ ๋Œ€์‹ , ๋ณต์ œ๊ฐ€ ์ผ์–ด๋‚˜์ง€ ์•Š๋Š” ์ฐธ์กฐํ˜•์œผ๋กœ ๋ฆฌํ„ดํ•˜๋ฉด ์–ด๋–จ๊นŒ ํ•˜๊ณ  ์ƒ๊ฐํ•  ์ˆ˜๋„ ์žˆ๋‹ค. ํ•˜์ง€๋งŒ add() ๋ฉ”์„œ๋“œ๊ฐ€ ๋ฆฌํ„ดํ•˜๋Š” ์ˆœ๊ฐ„ newCell ๊ฐ์ฒด๋Š” ์†Œ๋ฉธ๋˜๊ธฐ ๋•Œ๋ฌธ์— ์ฐธ์กฐํ˜•์œผ๋กœ ๋ฆฌํ„ดํ•˜๊ฒŒ ๋˜๋ฉด ๋ฉ”์„œ๋“œ์˜ ํ˜ธ์ถœ์ด ๋๋‚˜์ž๋งˆ์ž ๋Œ•๊ธ€๋ง ์ฐธ์กฐ(Dangling Reference)๊ฐ€ ๋˜์–ด ๋ฒ„๋ฆฐ๋‹ค. ์ด ์ˆœ๊ฐ„, add() ๋ฉ”์„œ๋“œ์—์„œ ์ƒ์„ฑํ–ˆ๋˜ newCell ๊ฐ์ฒด๋Š” ์‚ฌ๋ผ์ง€๊ฒŒ ๋œ๋‹ค. ์ฐธ์กฐํ˜•์€ ์–ด๋–ค ๋ณ€์ˆ˜๋ฅผ ๊ฐ€๋ฆฌ์ผœ์•ผ ๋˜๋Š”๋ฐ ๊ฐ€๋ฆฌํ‚ฌ ๋ณ€์ˆ˜๊ฐ€ ์‚ฌ๋ผ์ง€๊ฒŒ ๋˜์–ด ์œ ํšจํ•˜์ง€ ์•Š๊ฒŒ ๋œ๋‹ค.
  • 46. SPREADSHEETCELL์— ๋ง์…ˆ ๊ธฐ๋Šฅ ๊ตฌํ˜„ 2. operator+์˜ ์˜ค๋ฒ„๋กœ๋”ฉ
  • 47. SPREADSHEETCELL์— ๋ง์…ˆ ๊ธฐ๋Šฅ ๊ตฌํ˜„ operator+ ๋ฉ”์„œ๋“œ์—์„œ ๋ฐ›๋Š” ํŒŒ๋ผ๋ฏธํ„ฐ ๋‘ ๊ฐœ๊ฐ€ ํ•ญ์ƒ ๊ฐ™์€ ๋ฐ์ดํ„ฐ ํƒ€์ž…์ผ ํ•„์š”๋Š” ์—†๋‹ค. SpreadsheetCell ํด๋ž˜์Šค์—์„œ Spreadsheet ํด๋ž˜์Šค๋ฅผ ํŒŒ๋ผ๋ฏธํ„ฐ๋กœ ๋ฐ›๋Š” operator+ ๋ฉ”์„œ๋“œ๋ฅผ ์ •์˜ํ•  ์ˆ˜๋„ ์žˆ๋‹ค. ๋…ผ๋ฆฌ์ ์œผ๋กœ๋Š” ๋ง์ด ์•ˆ๋˜์ง€๋งŒ ์ปดํŒŒ์ผ์—๋Š” ์•„๋ฌด๋Ÿฐ ๋ฌธ์ œ๊ฐ€ ์—†๋‹ค. C++ ์ปดํŒŒ์ผ๋Ÿฌ๊ฐ€ ์ฝ”๋“œ๋ฅผ ํŒŒ์‹ฑํ•˜๋‹ค๊ฐ€ +, -, =๊ณผ ๊ฐ™์€ ๊ธฐํ˜ธ๋ฅผ ๋งŒ๋‚˜๊ฒŒ ๋˜๋ฉด operator+, operator-, operator=๋ฅผ ๊ฐ๊ฐ ์ฐพ์•„์„œ ํŒŒ๋ผ๋ฏธํ„ฐ ํƒ€์ž…์— ์ ํ•ฉํ•œ ๋ฉ”์„œ๋“œ๋ฅผ ํ˜ธ์ถœํ•˜๊ฒŒ ๋œ๋‹ค. (SpreadsheetCell ํด๋ž˜์Šค๋‚˜ ์ „์—ญ ํ•จ์ˆ˜ ์ค‘ ๋‘ ๊ฐœ์˜ SpreadsheetCell ํƒ€์ž… ํŒŒ๋ผ๋ฏธํ„ฐ๋ฅผ ๋ฐ›๋Š” operator+๋ผ๋Š” ์ด๋ฆ„์˜ ๋ฉ”์„œ๋“œ ๋˜๋Š” ํ•จ์ˆ˜๊ฐ€ ์žˆ๋Š”์ง€ ์ฐพ๋Š”๋‹ค.)
  • 48. SPREADSHEETCELL์— ๋ง์…ˆ ๊ธฐ๋Šฅ ๊ตฌํ˜„ operator+ ๋ฉ”์„œ๋“œ๋ฅผ ์ •์˜ํ•ด ๋‘๋ฉด ์…€๋ฟ๋งŒ ์•„๋‹ˆ๋ผ string, double, int ํƒ€์ž… ๋ฐ์ดํ„ฐ๋„ ๋ง์…ˆ์„ ํ•  ์ˆ˜ ์žˆ๊ฒŒ ๋œ๋‹ค. ๊ทธ ์ด์œ ๋Š” ์ปดํŒŒ์ผ๋Ÿฌ๊ฐ€ operator+๋ฅผ ์ฒ˜๋ฆฌํ•  ๋•Œ ์ ํ•ฉํ•œ ํƒ€์ž…์œผ๋กœ ๋ณ€ํ™˜ํ•  ๋ฐฉ๋ฒ•์ด ์žˆ๋Š”์ง€๋„ ์ฐพ๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค. ๋งŒ์•ฝ ์ƒ์„ฑ์ž ์ค‘์— ๋ถ€์ ํ•ฉํ•œ ํƒ€์ž…์„ ์ธ์ž๋กœ ๋ฐ›๋Š” ๊ฒƒ์ด ์žˆ๋‹ค๋ฉด ๊ทธ ์ƒ์„ฑ์ž๋ฅผ ์ด์šฉํ•ด ์ ํ•ฉํ•œ ํƒ€์ž…์˜ ์ž„์‹œ ๊ฐ์ฒด๋ฅผ ์ž๋™์œผ๋กœ ์ƒ์„ฑํ•œ๋‹ค. SpreadsheetCell์— string ํƒ€์ž… ํŒŒ๋ผ๋ฏธํ„ฐ๋ฅผ ๋ฐ›๋Š” ์ƒ์„ฑ์ž๊ฐ€ ์žˆ๋Š” ๊ฒƒ์„ ๋ฐœ๊ฒฌํ•˜๊ณ  SpreadsheetCell์˜ ์ž„์‹œ ๊ฐ์ฒด๋ฅผ ๋งŒ๋“ค์–ด operator+์„ ์‹คํ–‰ํ•œ๋‹ค. SpreadsheetCell์— double ํƒ€์ž… ํŒŒ๋ผ๋ฏธํ„ฐ๋ฅผ ๋ฐ›๋Š” ์ƒ์„ฑ์ž๊ฐ€ ์žˆ๋Š” ๊ฒƒ์„ ๋ฐœ๊ฒฌํ•˜๊ณ  SpreadsheetCell์˜ ์ž„์‹œ ๊ฐ์ฒด๋ฅผ ๋งŒ๋“ค์–ด operator+์„ ์‹คํ–‰ํ•œ๋‹ค. int๋ฅผ double๋กœ ๋ณ€ํ™˜
  • 49. SPREADSHEETCELL์— ๋ง์…ˆ ๊ธฐ๋Šฅ ๊ตฌํ˜„ 3. ์ „์—ญ ํ•จ์ˆ˜๋กœ์„œ์˜ operator+ ๋ฌต์‹œ์ ์ธ ๋ณ€ํ™˜์€ ์—ฐ์‚ฐ์ž์˜ ์ขŒํ•ญ์ด SpreadsheetCell ๊ฐ์ฒด์ธ ๊ฒฝ์šฐ์—๋งŒ ๋™์ž‘ํ•˜๊ณ  ์šฐํ•ญ์— ์œ„์น˜ํ•˜๋ฉด ๋™์ž‘ํ•˜์ง€ ์•Š๋Š”๋‹ค. ๋ง์…ˆ์€ ์ธ์ž์˜ ์ขŒ์šฐ ์œ„์น˜์™€ ๊ด€๊ณ„์—†์–ด์•ผ ํ•˜๋ฏ€๋กœ ๋ถ„๋ช… ๋ฌด์–ธ๊ฐ€ ์ž˜๋ชป๋˜์—ˆ๋‹ค. ๋ฌธ์ œ๋Š” SpreadsheetCell์˜ ๋ฉ”์„œ๋“œ๋กœ์„œ operator+๋ฅผ ์ •์˜ํ•˜๋ฉด ๊ฐ์ฒด์˜ ์šฐํ•ญ์— ์žˆ์„ ๋•Œ๋งŒ operator+๊ฐ€ ํ˜ธ์ถœ๋œ๋‹ค๋Š”๋ฐ ์žˆ๋‹ค. ํ•˜์ง€๋งŒ ์ „์—ญ ํ•จ์ˆ˜๋กœ์„œ operator+๋ฅผ ์ •์˜ํ•˜์—ฌ ํŠน์ • ๊ฐ์ฒด์— ์ข…์†๋˜์ง€ ์•Š๋„๋ก ํ•˜๋ฉด ๋ฌธ์ œ๊ฐ€ ํ•ด๊ฒฐ๋œ๋‹ค.
  • 50. SPREADSHEETCELL์— ๋ง์…ˆ ๊ธฐ๋Šฅ ๊ตฌํ˜„ ์ „์—ญ ํ•จ์ˆ˜ operator+๋Š” SpreadsheetCell ํด๋ž˜์Šค์˜ protected ๋ฉค๋ฒ„์— ์ ‘๊ทผํ•ด์•ผ ํ•˜๊ธฐ ๋•Œ๋ฌธ์— friend๋กœ ์„ ์–ธ๋˜์–ด์•ผ ํ•œ๋‹ค.
  • 51. SPREADSHEETCELL์— ๋ง์…ˆ ๊ธฐ๋Šฅ ๊ตฌํ˜„ ์œ„ ์ฝ”๋“œ๋Š” ๋ฌธ์ œ์—†์ด ์ปดํŒŒ์ผ๋˜๊ณ  ์‹คํ–‰๋„ ๋œ๋‹ค. ๊ทธ๋Ÿฐ๋ฐ operator+ ํ•จ์ˆ˜๊ฐ€ ํ˜ธ์ถœ๋˜์ง€ ์•Š๋Š”๋‹ค. ์œ„ ์ฝ”๋“œ๋Š” 4.5์™€ 5.5์— ๋Œ€ํ•ด ๋ณดํ†ต์˜ double ํƒ€์ž… ๋ง์…ˆ์„ ๋จผ์ € ์ˆ˜ํ–‰ํ•˜์—ฌ ๊ฒฐ๊ณผ์ ์œผ๋กœ 10์ด ๋œ๋‹ค. ๊ทธ ๋’ค ์ปดํŒŒ์ผ๋Ÿฌ๋Š” double ํƒ€์ž… ํŒŒ๋ผ๋ฏธํ„ฐ๋ฅผ ๋ฐ›๋Š” ์ƒ์„ฑ์ž๋ฅผ ๋ฐœ๊ฒฌํ•˜๊ณ  ๋ฌต์‹œ์ ์ธ ๋ณ€ํ™˜์„ ์ˆ˜ํ–‰ํ•˜์—ฌ SpreadsheetCell์˜ ์ž„์‹œ ๊ฐ์ฒด๋ฅผ ์ƒ์„ฑํ•œ ๋‹ค์Œ ๋Œ€์ž… ์—ฐ์‚ฐ์ž๋ฅผ ํ˜ธ์ถœํ•œ๋‹ค.
  • 52. ์‚ฐ์ˆ  ์—ฐ์‚ฐ์ž์˜ ์˜ค๋ฒ„๋กœ๋”ฉ C++์—์„œ๋Š” ์˜ค๋ฒ„๋กœ๋”ฉ๋œ ์—ฐ์‚ฐ์ž๊ฐ€ ์ผ๋ฐ˜ ์ƒ์‹์— ์–ด๊ธ‹๋‚˜๋Š”์ง€ ์–ด๋–ค์ง€ ๊ฒ€์‚ฌํ•˜์ง€ ์•Š๋Š”๋‹ค. ๋”ฐ๋ผ์„œ ๊ฐ ์—ฐ์‚ฐ ๊ธฐํ˜ธ๊ฐ€ ๊ฐ€์ง„ ์ผ๋ฐ˜์ ์ธ ์˜๋ฏธ์—์„œ ๊ทธ ๊ธฐ๋Šฅ์„ ์‰ฝ๊ฒŒ ์œ ์ถ”ํ•  ์ˆ˜ ์žˆ๋„๋ก ๊ตฌํ˜„ํ•˜๋Š” ๊ฒƒ์ด ๋ฐ”๋žŒ์งํ•˜๋‹ค. ๋˜ํ•œ C++์—์„œ๋Š” ์—ฐ์‚ฐ์ž์˜ ์šฐ์„ ์ˆœ์œ„๋ฅผ ๋ฐ”๊ฟ€ ์ˆ˜ ์—†๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด *๊ณผ /๋Š” +, -๋ณด๋‹ค ์šฐ์„ ํ•ด์„œ ์‹คํ–‰๋œ๋‹ค. 0์œผ๋กœ ๋‚˜๋ˆ„๊ธฐ๋ฅผ ๋ฐฉ์ง€ํ•˜๋Š” ๋ถ€๋ถ„. ๋งŒ์•ฝ 0์œผ๋กœ ๋‚˜๋ˆ„๋ ค ํ•˜๋ฉด ์ต์…‰์…˜์„ ๋ฐœ์ƒ์‹œํ‚จ๋‹ค.
  • 53. ์‚ฐ์ˆ  ์—ฐ์‚ฐ์ž์˜ ์˜ค๋ฒ„๋กœ๋”ฉ ์ถ•์•ฝํ˜• ์‚ฐ์ˆ  ์—ฐ์‚ฐ์ž์˜ ์˜ค๋ฒ„๋กœ๋”ฉ์€ ๊ธฐ๋ณธ ์—ฐ์‚ฐ์ž์˜ ์˜ค๋ฒ„๋กœ๋”ฉ๊ณผ ๋‘ ๊ฐ€์ง€ ๋ฉด์—์„œ ๋‹ค๋ฅด๋‹ค. ์ฒซ ๋ฒˆ์งธ ์ฐจ์ด์ ์€, ์ž„์‹œ ๊ฐ์ฒด๋ฅผ ๋งŒ๋“ค์ง€ ์•Š๊ณ  ์ขŒํ•ญ ๊ฐ์ฒด๋ฅผ ๋ณ€๊ฒฝํ•œ๋‹ค๋Š” ์ ์ด๋‹ค. ๋‘ ๋ฒˆ์งธ ์ฐจ์ด์ ์€, ๋ณ€๊ฒฝ๋œ ๊ฐ์ฒด์— ๋Œ€ํ•œ ์ฐธ์กฐ ํƒ€์ž…์„ ๊ฒฐ๊ณผ ๋ฆฌํ„ด ๊ฐ’์œผ๋กœ ์ƒ์„ฑํ•œ๋‹ค๋Š” ์ ์ด๋‹ค. 0์œผ๋กœ ๋‚˜๋ˆ„๊ธฐ๋ฅผ ๋ฐฉ์ง€ํ•˜๋Š” ๋ถ€๋ถ„. ๋งŒ์•ฝ 0์œผ๋กœ ๋‚˜๋ˆ„๋ ค ํ•˜๋ฉด ์ต์…‰์…˜์„ ๋ฐœ์ƒ์‹œํ‚จ๋‹ค.
  • 54. ๋น„๊ต ์—ฐ์‚ฐ์ž์˜ ์˜ค๋ฒ„๋กœ๋”ฉ >, <, ==๊ณผ ๊ฐ™์€ ๋น„๊ต ์—ฐ์‚ฐ์ž๋„ ๊ฐ์ฒด๊ฐ„ ์ž‘์—…์— ํ™œ์šฉํ•˜๊ธฐ ์ข‹์€ ์—ฐ์‚ฐ์ž๋“ค์ด๋‹ค. ๊ธฐ๋ณธ ์‚ฐ์ˆ  ์—ฐ์‚ฐ์ž์—์„œ์™€ ๋งˆ์ฐฌ๊ฐ€์ง€๋กœ ์ด๋“ค ์—ฐ์‚ฐ์ž๋„ ์ „์—ญ ํ•จ์ˆ˜๋กœ ๋งŒ๋“ค์–ด ์ขŒํ•ญ๊ณผ ์šฐํ•ญ ์–ด๋Š ์ชฝ ๊ฐ’์ด๋“  ๋ฌต์‹œ์ ์ธ ๋ณ€ํ™˜์„ ํ•  ์ˆ˜ ์žˆ๋„๋ก ํ•œ๋‹ค.
  • 55. ์•ˆ์ •๋œ ์ธํ„ฐํŽ˜์ด์Šค ๋งŒ๋“ค๊ธฐ ์ธํ„ฐํŽ˜์ด์Šค ํด๋ž˜์Šค์™€ ๊ตฌํ˜„ ํด๋ž˜์Šค์˜ ํ™œ์šฉ
  • 56. ์ธํ„ฐํŽ˜์ด์Šค ํด๋ž˜์Šค์™€ ๊ตฌํ˜„ ํด๋ž˜์Šค์˜ ํ™œ์šฉ ํด๋ž˜์Šค๋ฅผ ๋””์ž์ธํ•  ๋•Œ๋Š” ์ถ”์ƒํ™” ์›์น™์„ ์ ์šฉํ•˜์—ฌ ๊ตฌํ˜„๊ณผ ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ๋ถ„๋ฆฌํ•ด์•ผ ํ•œ๋‹ค. ๊ตฌ์ฒด์ ์œผ๋กœ๋Š” ๋ชจ๋“  ๋ฐ์ดํ„ฐ ๋ฉค๋ฒ„๋“ค์„ protected๋‚˜ private๋กœ ์„ ์–ธํ•˜๊ณ  ์™ธ๋ถ€์—์„œ ๋ฉค๋ฒ„๋“ค์„ ์ ‘๊ทผํ•  ํ•„์š”๊ฐ€ ์žˆ์„ ๋•Œ๋Š” get/set ๋ฉ”์„œ๋“œ๋ฅผ ์ด์šฉํ•œ๋‹ค. ํ•˜์ง€๋งŒ ํด๋ž˜์Šค ์ •์˜ ๋ฌธ๋ฒ•์€ public ์ธํ„ฐํŽ˜์ด์Šค์™€ private ๋ฐ์ดํ„ฐ ๋ฉค๋ฒ„ ๋ฐ ๋ฉ”์„œ๋“œ๋ฅผ ํ•œ ํด๋ž˜์Šค์—์„œ ์ •์˜ํ•˜๋„๋ก ํ•˜๊ณ  ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ๋‚ด๋ถ€ ๊ตฌํ˜„์ด ์‚ฌ์šฉ์ž์—๊ฒŒ ๋…ธ์ถœ๋œ๋‹ค.
  • 57. ์ธํ„ฐํŽ˜์ด์Šค ํด๋ž˜์Šค์™€ ๊ตฌํ˜„ ํด๋ž˜์Šค์˜ ํ™œ์šฉ ํ•ด๊ฒฐ ๋ฐฉ๋ฒ•์€ ํด๋ž˜์Šค๋ฅผ ๋งŒ๋“ค ๋•Œ๋งˆ๋‹ค ๋งค๋ฒˆ ์ธํ„ฐํŽ˜์ด์Šค ํด๋ž˜์Šค์™€ ๊ตฌํ˜„ ํด๋ž˜์Šค๋ฅผ ๋‘ ๊ฐœ์”ฉ ๋งŒ๋“œ๋Š” ๊ฒƒ์ด๋‹ค. ๊ตฌํ˜„ ํด๋ž˜์Šค๋Š” ์›๋ž˜ ๋งŒ๋“ค๋˜ ๋ฐฉ์‹์˜ ํด๋ž˜์Šค์™€ ๊ฐ™๋‹ค. ์ธํ„ฐํŽ˜์ด์Šค ํด๋ž˜์Šค๋Š” ๊ตฌํ˜„ ํด๋ž˜์Šค์˜ public ๋ฉ”์„œ๋“œ๋งŒ์„ ๋‹ด๋Š”๋‹ค. ์ด๋ ‡๊ฒŒ ํด๋ž˜์Šค๋ฅผ ๋ถ„๋ฆฌํ•˜๋ฉด ๊ตฌํ˜„ ํด๋ž˜์Šค๊ฐ€ ์–ด๋–ป๊ฒŒ ๋ฐ”๋€Œ๋“  public ์ธํ„ฐํŽ˜์ด์Šค ํด๋ž˜์Šค์—๋Š” ๋ณ€ํ™”๊ฐ€ ์—†์œผ๋ฏ€๋กœ ์ปดํŒŒ์ผ์„ ๋‹ค์‹œ ํ•ด์•ผ ํ•  ํ•„์š”๋ฅผ ์ค„์ผ ์ˆ˜ ์žˆ๋‹ค. ๋จผ์ € ๊ธฐ์กด์˜ Spreadsheet ํด๋ž˜์Šค ์ด๋ฆ„์„ SpreadsheetImpl๋กœ ๋ฐ”๊พผ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ์ƒˆ๋กœ์šด Spreadsheet ํด๋ž˜์Šค๋ฅผ ์ •์˜ํ•œ๋‹ค. ํ•œ ๊ฐ€์ง€ ๋‹ค๋ฅธ ์ ์€ Spreadsheet ์ƒ์„ฑ์ž๋กœ ์ดˆ๊ธฐํ™”ํ•  const ๋ฉค๋ฒ„๊ฐ€ ์—†์–ด์กŒ๊ธฐ ๋•Œ๋ฌธ์— ๋””ํดํŠธ ํŒŒ๋ผ๋ฏธํ„ฐ๋ฅผ ์„ค์ •ํ•  ์ˆ˜ ์—†์–ด ์ƒ์„ฑ์ž๊ฐ€ ๋‘ ๊ฐœ๋กœ ๋‚˜๋‰˜์—ˆ๋‹ค. ๋Œ€์‹  SpreadsheetImpl ํด๋ž˜์Šค์—์„œ ํ•ด๋‹น ๋””ํดํŠธ ๊ฐ’์„ ์„ค์ •ํ•œ๋‹ค.
  • 58. ์ธํ„ฐํŽ˜์ด์Šค ํด๋ž˜์Šค์™€ ๊ตฌํ˜„ ํด๋ž˜์Šค์˜ ํ™œ์šฉ Spreadsheet ๋ฉ”์„œ๋“œ์˜ ๊ตฌํ˜„๋ถ€๋Š” ๋‹จ์ง€ SpreadsheetImpl ๊ฐ์ฒด์˜ ํ•ด๋‹น ๋ฉ”์„œ๋“œ ํ˜ธ์ถœ์„ ์ค‘๊ณ„ํ•ด์ค€๋‹ค. ์ด๋Ÿฌํ•œ ํ…Œํฌ๋‹‰์€ ์ธํ„ฐํŽ˜์ด์Šค์™€ ๊ตฌํ˜„์„ ์™„์ „ํ•˜๊ฒŒ ๋ถ„๋ฆฌํ•ด์ฃผ๋ฉฐ ์ปดํŒŒ์ผ ์‹œ๊ฐ„์„ ๋‹จ์ถ•ํ•ด์ฃผ๊ธฐ ๋•Œ๋ฌธ์— ๋งค์šฐ ๊ฐ•๋ ฅํ•˜๋‹ค. ๋” ๋‚˜์•„๊ฐ€์„œ ํ”„๋ฆฌ์ปดํŒŒ์ผ๋œ ํ—ค๋”(Pre-Compiled Header)๋ฅผ ์ด์šฉํ•ด ๊ธฐ๋ณธ์ ์ธ ๋นŒ๋“œ ์‹œ๊ฐ„ ์ž์ฒด๋ฅผ ์ค„์ผ ์ˆ˜๋„ ์žˆ๋‹ค.