๐Ÿ•ท๏ธ Crawler Inspector

URL Lookup

Direct Parameter Lookup

Raw Queries and Responses

1. Shard Calculation

Query:
Response:
Calculated Shard: 156 (from laksa054)

2. Crawled Status Check

Query:
Response:

3. Robots.txt Check

Query:
Response:

4. Spam/Ban Check

Query:
Response:

5. Seen Status Check

โ„น๏ธ Skipped - page is already crawled

๐Ÿ“„
INDEXABLE
โœ…
CRAWLED
4 months ago
๐Ÿšซ
ROBOTS BLOCKED

Page Info Filters

FilterStatusConditionDetails
HTTP statusPASSdownload_http_code = 200HTTP 200
Age cutoffPASSdownload_stamp > now() - 6 MONTH4.6 months ago
History dropPASSisNull(history_drop_reason)No drop reason
Spam/banPASSfh_dont_index != 1 AND ml_spam_score = 0ml_spam_score=0
CanonicalPASSmeta_canonical IS NULL OR = '' OR = src_unparsedNot set

Page Details

PropertyValue
URLhttps://www.handongbee.com/posts/Cpp%EC%A0%95%EB%A6%AC/
Last Crawled2025-11-24 10:08:14 (4 months ago)
First Indexed2024-03-09 03:33:04 (2 years ago)
HTTP Status Code200
Meta Titleํ•œ ํŽ˜์ด์ง€์— Cpp ๋ชจ๋‘ ์ •๋ฆฌํ•˜๊ธฐ | 86.5๐ŸŒก๏ธ
Meta Descriptionํ•œ ํŽ˜์ด์ง€๋กœ ๋๋‚ด๋Š” C++ ๋ฌธ๋ฒ•
Meta Canonicalnull
Boilerpipe Text
ํ•œ ํŽ˜์ด์ง€๋กœ ๋๋‚ด๋Š” C++ ๋ฌธ๋ฒ• C++ vs C C++์€ ๊ฐ์ฒด์ง€ํ–ฅ์  ์–ธ์–ด์ธ Simula์˜ ๊ฐœ๋…์„ C์–ธ์–ด์— ์ถ”๊ฐ€ํ•˜์—ฌ ๋งŒ๋“  ํ”„๋กœ๊ทธ๋ž˜๋ฐ์–ธ์–ด์ด๋‹ค. ์ œ๋„ค๋ฆญ, ๊ฐ์ฒด์ง€ํ–ฅ, ๊ตฌ์กฐ์  ํ”„๋กœ๊ทธ๋ž˜๋ฐ์ด ๊ฐ€๋Šฅํ•˜๋‹ค๋Š” ์žฅ์ ์ด ์žˆ๋‹ค. ์ฝ”๋“œ ์‹คํ–‰ ๋ฐฉ์‹ ์†Œ์Šค์ฝ”๋“œ๊ฐ€ ์‹คํ–‰ํŒŒ์ผ์ด ๋˜์–ด์•ผ, ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ๋‹ค. ์„ ํ–‰์ฒ˜๋ฆฌ๊ธฐ: โ€œ#โ€ ๋ฌธ์ž๋กœ ์‹œ์ž‘ํ•˜๋Š” ์„ ํ–‰์ฒ˜๋ฆฌ ์ง€์‹œ๋ฌธ(#define)์„ ์ฒ˜๋ฆฌํ•œ๋‹ค. ์ปดํŒŒ์ผ๋Ÿฌ๊ฐ€ ์ž‘์—…ํ•˜๊ธฐ ์ข‹๋„๋ก ์†Œ์Šค๋ฅผ ์žฌ๊ตฌ์„ฑํ•˜๋Š” ์—ญํ• ์„ ํ•œ๋‹ค. ์ปดํŒŒ์ผ๋Ÿฌ: ์†Œ์Šค์ฝ”๋“œ๋ฅผ ๊ธฐ๊ณ„์–ด๋กœ ๋ณ€ํ™˜ํ•œ๋‹ค.( .o , .obj ) ๋ง์ปค: ์˜ค๋ธŒ์ ํŠธ ํŒŒ์ผ๊ณผ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ํŒŒ์ผ, ์‹œ๋™์ฝ”๋“œ(OS์™€์˜ ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ๋‹ด๋‹นํ•จ)๋ฅผ ํ•ฉ์ณ ํ•˜๋‚˜์˜ ์‹คํ–‰ ํŒŒ์ผ์„ ๋งŒ๋“ ๋‹ค. ์šฐ๋ฆฌ๋Š” ๋ง์ปค์—์„œ ๋งŒ๋“ค์–ด์ง„ ์‹คํ–‰ํŒŒ์ผ์„ ํ†ตํ•ด ํ”„๋กœ๊ทธ๋žจ์„ ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ๋‹ค. vscode์—์„œ Code Runner๋ฅผ ํ†ตํ•ด Cpp ํŒŒ์ผ์„ ์‹คํ–‰์‹œํ‚ค๋ฉด ํ„ฐ๋ฏธ๋„์—์„œ ์ž๋™์œผ๋กœ ๋‹ค์Œ๊ณผ ๊ฐ™์€ ๋ช…๋ น์–ด๊ฐ€ ์ž…๋ ฅ๋œ๋‹ค. 1 2 cd "/Users/kane/workspace/1. Project/Algorithm/๋ฐฑ์ค€/9345/" && g ++ - std = c ++ 2 a - g code . cpp - o a . out && "/Users/kane/workspace/1. Project/Algorithm/๋ฐฑ์ค€/9345/" / a . out ์ด๋ฅผ ๋‹จ๊ณ„๋ณ„๋กœ ๋ถ„์„ํ•˜๋ฉด, ๋””๋ ‰ํ„ฐ๋ฆฌ๋ฅผ ์ž‘์—… ํ™˜๊ฒฝ์œผ๋กœ ์˜ฎ๊ธฐ๊ณ  g++ ์ปดํŒŒ์ผ๋Ÿฌ๋ฅผ ํ†ตํ•ด ์ฝ”๋“œ๋ฅผ ์ฝ์–ด a.out ์‹คํ–‰ํŒŒ์ผ์„ ๋งŒ๋“ ๋‹ค. ์ดํ›„ ํ•ด๋‹น ์‹คํ–‰ํŒŒ์ผ์„ ์‹คํ–‰์‹œํ‚จ๋‹ค. ํƒ€์ž… ๋ณ€ํ™˜ ๋งŒ์•ฝ, ์„œ๋กœ ๋‹ค๋ฅธ ํƒ€์ž…์œผ๋กœ ์—ฐ์‚ฐ์„ ์ง„ํ–‰ํ•˜๋ฉด, ๊ฒฐ๊ณผ๋ฌผ์˜ ํƒ€์ž…์€ ๋” ๋ฒ”์œ„๊ฐ€ ํฐ ์ชฝ์œผ๋กœ ๋ณ€ํ™˜๋œ๋‹ค. ์‚ฐ์ˆ  ์—ฐ์‚ฐ ์‹œ์—๋Š” ๋ฐ์ดํ„ฐ์˜ ์†์‹ค์ด ์ตœ์†Œํ™”๋˜๋Š” ๋ฐฉํ–ฅ์œผ๋กœ ๋ฌต์‹œ์  ํƒ€์ž… ๋ณ€ํ™˜์ด ์ง„ํ–‰๋ฉ๋‹ˆ๋‹ค. ๋ช…์‹œ์  ๋ณ€ํ™˜ (๋ณ€ํ™˜ํ• ํƒ€์ž…) ๋ณ€ํ™˜ํ• ๋ฐ์ดํ„ฐ // C์–ธ์–ด์™€ C++ ๋‘˜ ๋‹ค ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•จ. ๋ณ€ํ™˜ํ• ํƒ€์ž… (๋ณ€ํ™˜ํ• ๋ฐ์ดํ„ฐ) // C++์—์„œ๋งŒ ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•จ. static ์ •์  ๋ณ€์ˆ˜๋ฅผ ์˜๋ฏธํ•˜๊ณ , ์ด๋Š” ํ•จ์ˆ˜์˜ ํ˜ธ์ถœ์ด ๋๋‚˜๋„ ์‚ฌ๋ผ์ง€๋Š” ์ง€์—ญ ๋ณ€์ˆ˜์™€๋Š” ๋‹ค๋ฅด๊ฒŒ ์ง€์†์ ์œผ๋กœ ๋ฉ”๋ชจ๋ฆฌ ๊ณต๊ฐ„์„ ์œ ์ง€ ํ•œ๋‹ค. ๋จผ์ € ๊ฐ€๊นŒ์šด ๋ธ”๋ฝ๋‹จ์œ„ ์— ์ƒ์„ฑ๋œ ์ง€์—ญ ๋ณ€์ˆ˜์—์„œ๋ถ€ํ„ฐ ์ ์  ๋ฉ€๋ฆฌ๋‚˜๊ฐ„๋‹ค. ์ฆ‰ ๊ฐ™์€ ์ด๋ฆ„์œผ๋กœ ์„ ์–ธ๋œ ์ง€์—ญ๋ณ€์ˆ˜์™€ ์ „์—ญ๋ณ€์ˆ˜๊ฐ€ ์žˆ์œผ๋ฉด ์ง€์—ญ๋ณ€์ˆ˜๋ฅผ ์‚ฌ์šฉํ•˜๊ฒŒ ๋œ๋‹ค. Auto C++11 ๋ฒ„์ „์—์„œ ์ƒ๊ฒจ๋‚ฌ๊ณ , ์ปดํŒŒ์ผ๋Ÿฌ ๋‹จ๊ณ„์—์„œ ์ž๋™์œผ๋กœ ํƒ€์ž…์„ ํ• ๋‹นํ•œ๋‹ค. ์‹œํ—˜์—์„œ๋Š” ํŽธํ•˜์ง€๋งŒ, ํƒ€์ž…์ด ํ—ท๊ฐˆ๋ฆด ๋•Œ๋Š” ์“ฐ์ง€ ์•Š๋Š” ๊ฒƒ์ด ์ข‹๋‹ค. ์ƒ์ˆ˜ํ‘œํ˜„ ๋ฆฌํ„ฐ๋Ÿด ์ƒ์ˆ˜: ๋ง๊ทธ๋Œ€๋กœ, ์ˆซ์ž๋ฅผ ์˜๋ฏธํ•˜๋ฉฐ C++์—์„œ ์ˆซ์ž๋“ค์€ ์ƒ์ˆ˜๋กœ ํ‘œํ˜„๋œ๋‹ค. ex) 1.1 or 3 ์‹ฌ๋ณผ๋ฆญ ์ƒ์ˆ˜: ์•ž์— const๋ฅผ ๋ถ™์—ฌ ์ƒ์ˆ˜์ฒ˜๋Ÿผ ์‚ฌ์šฉํ•œ๋‹ค. ์„ ์–ธ๊ณผ ๋™์‹œ์— ์ดˆ๊ธฐํ™”ํ•˜๋ฉฐ, ๊ฐ’์„ ์ˆ˜์ •ํ•  ์ˆ˜ ์—†๋‹ค. ์‹ฌ๋ณผ๋ฆญ ์ƒ์ˆ˜๋Š” ์•„๋ž˜์™€ ๊ฐ™์ด ๊ฐ’์ด ๋ณ€๊ฒฝ๋˜๋ฉด ์•ˆ๋  ๋•Œ ์‚ฌ์šฉํ•œ๋‹ค. ์ฃผ๋กœ for, ํ•จ์ˆ˜ ๋“ฑ ํŒŒ๋ผ๋ฏธํ„ฐ๋กœ ๋„˜๊ฒจ์ค„ ๋•Œ๋‚˜ ์‚ฌ์ด์ฆˆ์™€ ๊ฐ™์€ ๋ณ€์ˆ˜๋ฅผ ์ง€์ •ํ•  ๋•Œ ์‚ฌ์šฉํ•œ๋‹ค. 1 2 3 bool operator > ( const Entry & lhs , const Entry & rhs ) { return lhs . time > rhs . time ; } ์—ฐ์‚ฐ์ž ๋…ผ๋ฆฌ๋Š” && , || , ! ๊ฐ€ ์žˆ๋‹ค๋Š” ๊ฒƒ๋งŒ ๊ธฐ์–ตํ•˜๋ฉด ๋œ๋‹ค. & ๋Œ€์‘๋˜๋Š” ๋น„ํŠธ๊ฐ€ ๋ชจ๋‘ 1์ด๋ฉด 1์„ ๋ฐ˜ํ™˜ํ•จ. (๋น„ํŠธ AND ์—ฐ์‚ฐ) ๋Œ€์‘๋˜๋Š” ๋น„ํŠธ ์ค‘์—์„œ ํ•˜๋‚˜๋ผ๋„ 1์ด๋ฉด 1์„ ๋ฐ˜ํ™˜ํ•จ. (๋น„ํŠธ OR ์—ฐ์‚ฐ) ^ ๋Œ€์‘๋˜๋Š” ๋น„ํŠธ๊ฐ€ ์„œ๋กœ ๋‹ค๋ฅด๋ฉด 1์„ ๋ฐ˜ํ™˜ํ•จ. (๋น„ํŠธ XOR ์—ฐ์‚ฐ) ~ ๋น„ํŠธ๋ฅผ 1์ด๋ฉด 0์œผ๋กœ, 0์ด๋ฉด 1๋กœ ๋ฐ˜์ „์‹œํ‚ด. (๋น„ํŠธ NOT ์—ฐ์‚ฐ, 1์˜ ๋ณด์ˆ˜) ยซ ์ง€์ •ํ•œ ์ˆ˜๋งŒํผ ๋น„ํŠธ๋“ค์„ ์ „๋ถ€ ์™ผ์ชฝ์œผ๋กœ ์ด๋™์‹œํ‚ด. (left shift ์—ฐ์‚ฐ) ยป ๋ถ€ํ˜ธ๋ฅผ ์œ ์ง€ํ•˜๋ฉด์„œ ์ง€์ •ํ•œ ์ˆ˜๋งŒํผ ๋น„ํŠธ๋ฅผ ์ „๋ถ€ ์˜ค๋ฅธ์ชฝ์œผ๋กœ ์ด๋™์‹œํ‚ด. (right shift ์—ฐ์‚ฐ) ์‚ผํ•ญ์—ฐ์‚ฐ์ž(์กฐ๊ฑด์‹ย ?ย ๋ฐ˜ํ™˜๊ฐ’1ย :ย ๋ฐ˜ํ™˜๊ฐ’2) ํฌ์ธํ„ฐ ์—ฐ์‚ฐ์ž ์„ ์–ธ: ํฌ์ธํ„ฐ๋Š” ์ฃผ์†Œ๋ฅผ ๊ฐ€๋ฆฌํ‚จ๋‹ค. ์ฃผ์†Œ์—ฐ์‚ฐ์ž(&): &์€ ์ฐธ์กฐ ๋ณ€์ˆ˜๋กœ๋„ ์‚ฌ์šฉ๋œ๋‹ค. ์ฐธ์กฐ์—ฐ์‚ฐ์ž(*) ํฌ์ธํ„ฐ ์—ฐ์‚ฐ(++, โ€”): ํ•ด๋‹น ํฌ์ธํ„ฐ์˜ ํƒ€์ž…์˜ ํฌ๊ธฐ๋งŒํผ ์ฆ๊ฐ€, ๊ฐ์†Œํ•œ๋‹ค.(ex. int ํ˜•์ด๋ฉด 4๋ฐ”์ดํŠธ๋งŒํผ) ๋ฐฐ์—ด๊ณผ ํฌ์ธํ„ฐ ๋ฐฐ์—ด๊ณผ ํฌ์ธํ„ฐ๋Š” ์„œ๋กœ ๋Œ€์ฒดํ•  ์ˆ˜ ์žˆ๋‹ค. ๋ฐฐ์—ด์˜ ์ด๋ฆ„์€ ํฌ์ธํ„ฐ์™€ ๊ฑฐ์˜ ์œ ์‚ฌํ•˜๋‹ค. ์ƒ์ˆ˜๋ผ๋Š” ์ (๋‹ค๋ฅธ ๋ฐฐ์—ด์„ ๋Œ€์ž…ํ•  ์ˆ˜ ์—†๋‹ค๋Š” ์ ) ex) arr1 โ‰  arr2 ์„ ์ œ์™ธํ•˜๊ณ ๋Š” ๋˜‘๊ฐ™๋‹ค. ๋ฐฐ์—ด์˜ ์ด๋ฆ„์„ ๊ฐ€์ง€๊ณ  ํฌ์ธํ„ฐ์ฒ˜๋Ÿผ ์—ฐ์‚ฐ์„ ํ•  ์ˆ˜ ์žˆ๋‹ค. 1 2 3 4 5 int arr [ 10 ] = { 1 , 2 , 3 , 4 , 5 , 6 , 7 , 8 , 9 , 10 }; int * ptr = arr ; // ์œ„์™€ ์•„๋ž˜์˜ ๊ฒฐ๊ณผ๋Š” ๊ฐ™๋‹ค. cout << * arr << '\n' << * ( arr + 9 ); cout << * ptr << '\n' << * ( ptr + 9 ); โ€œ๋ฐฐ์—ด ํ˜น์€ ํฌ์ธํ„ฐ์™€ ๊ด€๋ จ๋œ ์—ฐ์‚ฐ์„ ํ•  ๋•Œ๋Š” ์ฃผ์˜ํ•ด์•ผํ•œ๋‹ค. ์‹ค์ œ ์‚ฌ์šฉํ•˜์ง€ ์•Š๋Š” ๋ฉ”๋ชจ๋ฆฌ ์˜์—ญ(ex. ๋ฐฐ์—ด์˜ ํฌ๊ธฐ๋ฅผ ๋„˜์–ด์„  ์ ‘๊ทผ)์„ ํ•  ๋•Œ ์ปดํŒŒ์ผ๋Ÿฌ๋Š” ์˜ค๋ฅ˜๋ฅผ ๋ฐœ์ƒ์‹œํ‚ค์ง€ ์•Š๊ณ  ํ”„๋กœ๊ทธ๋žจ์„ ๋™์ž‘์‹œํ‚จ๋‹ค.โ€ ์ „๋‹ฌ ๋ฐฉ์‹ [์–‡์€ ๋ณต์‚ฌ vs ๊นŠ์€ ๋ณต์‚ฌ] โ€œ๋‹จ์ง€ ์ฃผ์†Œ๊ณต๊ฐ„๋งŒ ๊ฐ€๋ฅดํ‚ค๋Š” ๊ฐ€? ์ƒˆ๋กœ์šด ์ฃผ์†Œ๊ณต๊ฐ„์„ ํ• ๋‹นํ•˜๋Š”๊ฐ€?โ€๊ฐ€ ๊ธฐ์ค€์ด๋œ๋‹ค. ์–‡์€ ๋ณต์‚ฌ๋Š” ์–•์€ ๋ณต์‚ฌ์˜ ๊ฒฝ์šฐ ๋™์  ํ• ๋‹น์„ ๋ฐ›์€ ๋ณ€์ˆ˜์˜ ์ฃผ์†Œ๊ฐ’์„ ๊ณต์œ ํ•œ๋‹ค. ๊นŠ์€ ๋ณต์‚ฌ๋Š” ๊นŠ์€ ๋ณต์‚ฌ๋Š” ์ƒˆ๋กœ์ด ๋™์ ํ• ๋‹น์„ ๋ฐ›๊ณ , ์›๋ณธ์˜ ๋ฐ์ดํ„ฐ๋ฅผ ๋ณต์‚ฌํ•œ๋‹ค.(์™„์ „ํžˆ ๋‹ค๋ฅธ ๊ฐœ๋ณ„์ ์ธ ๊ฐ์ฒด๊ฐ€ ๋œ๋‹ค.) [call by value vs call by reference] C์–ธ์–ด์—์„œ ํ•จ์ˆ˜ ํŒŒ๋ผ๋ฏธํ„ฐ ๋ฐฉ์‹์€ ๊ฐ’์— ์˜ํ•œ ์ „๋‹ฌ ๋ฐฉ์‹์„ ๋”ฐ๋ฅธ๋‹ค. ๋งค๊ฐœ๋ณ€์ˆ˜์˜ ๊ฐ’๋งŒ ๋ณต์‚ฌํ•œ๋‹ค. ๋งŒ์•ฝ ์ฐธ์กฐ ์—ฐ์‚ฐ์ž๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด, ์ฐธ์กฐ์— ์˜ํ•œ ์ „๋‹ฌ์„ ์ง„ํ–‰ํ•œ๋‹ค. Namespace ์ด๋ฆ„ ์ถฉ๋Œ ๋ฌธ์ œ๋ฅผ C++์—์„œ๋Š” ๋„ค์ž„์ŠคํŽ˜์ด์Šค(namespace) ๋ฅผ ํ†ตํ•ด ํ•ด๊ฒฐํ•˜๊ณ  ์žˆ๋‹ค. ์ ‘๊ทผ ๋ฐฉ๋ฒ•: ๋„ค์ž„์ŠคํŽ˜์ด์Šค์— ์ ‘๊ทผํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” ๋ฒ”์œ„ ์ง€์ • ์—ฐ์‚ฐ์ž ( ::, scope resolution operator)๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ, ํ•ด๋‹น ์ด๋ฆ„์„ ํŠน์ • ๋„ค์ž„์ŠคํŽ˜์ด์Šค๋กœ ์ œํ•œํ•˜๋ฉด ๋œ๋‹ค. ๋„ค์ž„์ŠคํŽ˜์ด์Šค์— ์†ํ•œ ์ด๋ฆ„์„ ์‚ฌ์šฉํ•  ๋•Œ๋งˆ๋‹ค ๋งค๋ฒˆ ๋ฒ”์œ„ ์ง€์ • ์—ฐ์‚ฐ์ž๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์ด๋ฆ„์„ ์ œํ•œ ํ•˜๋Š” ๊ฒƒ์€ ๋งค์šฐ ๋ถˆํŽธํ•˜๋‹ค. ๋˜ํ•œ, ๊ธธ์–ด์ง„ ์ฝ”๋“œ๋กœ ์ธํ•ด ๊ฐ€๋…์„ฑ ๋˜ํ•œย ๋–จ์–ด์ง€๊ฒŒ ๋œ๋‹ค. C++์—์„œ๋Š” ์ด๋Ÿฌํ•œ ๋ถˆํŽธํ•จ์„ ํ•ด์†Œํ•  ์ˆ˜ ์žˆ๋„๋กย ๋‹ค์Œ๊ณผ ๊ฐ™์€ย ๋ฐฉ๋ฒ•์„ ์ œ๊ณตํ•˜๊ณ  ์žˆ๋‹ค. using ์ง€์‹œ์ž(directive): usingย namespaceย ๋„ค์ž„์ŠคํŽ˜์ด์Šค์ด๋ฆ„; using ์„ ์–ธ(declaration): usingย ๋„ค์ž„์ŠคํŽ˜์ด์Šค์ด๋ฆ„::์ด๋ฆ„; 1 2 3 4 using std :: cout ; int main () { cout << "Hello, World!" << std :: endl ; } ํฌ์ธํ„ฐ vs ์ฐธ์กฐ(&) ํฌ์ธํ„ฐ๋Š” ํ•˜๋‚˜์˜ ๋ณ€์ˆ˜์ด๋‹ค. ์ฐธ์กฐ๋Š” ๋ณ€์ˆ˜๋ผ๊ณ  ๋ณด๊ธฐ์—๋Š” ๋ถ€์กฑํ•˜๋‹ค. ์žฌ๋ฐ”์ธ๋”ฉ์ด ๋ถˆ๊ฐ€๋Šฅํ•˜๋‹ค. ์ฆ‰, ์ƒˆ๋กœ์šด ๊ฐ’์œผ๋กœ ๋ณ€๊ฒฝํ•  ์ˆ˜ ์—†๋‹ค. ํ•œ๋ฒˆ ์ฐธ์กฐํ•  ๋ณ€์ˆ˜(๋ฉ”๋ชจ๋ฆฌ)๋ฅผ ๊ฒฐ์ •ํ–ˆ์œผ๋ฉด ๊ฐ€๋ฆฌํ‚ค๋Š” ๋ฉ”๋ชจ๋ฆฌ ๊ณต๊ฐ„์„ ๋ณ€๊ฒฝํ•  ์ˆ˜ ์—†๋‹ค๋Š” ๋œป์ด๋‹ค. 1 2 3 4 int x = 10 ; int y = 10 ; int & ref = x ; // ์ฐธ์กฐ ๋Œ€์ƒ์„ y๋กœ ๋ฐ”๊พธ๊ฑฐ๋‚˜ ํ•  ์ˆ˜ ์—†๋‹ค. ref = 20 ; ์‹œ๊ฐ„๋ณต์žก๋„ ์‹œ๊ฐ„๋ณต์žก๋„, ๋ฌธ์ œ ๋ถ„๋ฅ˜ ๋ฉ”๋ชจ๋ฆฌ C์–ธ์–ด ๋™์ ํ• ๋‹น C์–ธ์–ด์—์„œ ๋ฉ”๋ชจ๋ฆฌ ํ• ๋‹น ํ•จ์ˆ˜๋กœ malloc, calloc, realloc์ด ์กด์žฌํ•œ๋‹ค. malloc๊ณผ calloc์€, void* ํƒ€์ž…์„ ๋ฆฌํ„ดํ•˜๋ฉฐ ์ง์ ‘ ์บ์ŠคํŒ…ํ•ด์•ผ ํ•œ๋‹ค. ex) char* p = (char*) malloc(sizeof(char)*10); malloc๊ณผ calloc์˜ ์ฐจ์ด์ ์€ calloc์€ ์‚ฌ์ด์ฆˆ๋ฅผ ์ž…๋ ฅ ์œผ๋กœ ๋„ฃ์–ด์ฃผ๊ณ  0์œผ๋กœ ์ดˆ๊ธฐํ™” ํ•ด์ค€๋‹ค. realloc์€ ์œ„์˜ ๋‘๊ฐ€์ง€ ์œ ํ˜•์œผ๋กœ ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ํ• ๋‹นํ•œ ํ›„ ๋ฉ”๋ชจ๋ฆฌ๊ณต๊ฐ„์„ ๋Š˜๋ฆฌ๊ฑฐ๋‚˜, ์ค„์ด๊ณ  ์‹ถ์„ ๋•Œ ์‚ฌ์šฉํ•œ๋‹ค. void* realloc(void* p, size_t size) ์ด๋ ‡๊ฒŒ ์ƒ์„ฑํ•œ ๊ณต๊ฐ„์€ ํ”„๋กœ๊ทธ๋žจ์ด ์ข…๋ฃŒ๋  ๋•Œ, ๋‚ด๊ฐ€ ์ง์ ‘ ํ•ด์ œ์‹œ์ผœ์•ผ ํ•œ๋‹ค. free() ๋ฅผ ํ†ตํ•ด ํ•ด์ œํ•œ๋‹ค.( PC๋ฅผ ๋„๊ธฐ ์ „ ๊นŒ์ง€ ํ•ด์ฒดํ•˜์ง€ ์•Š์œผ๋ฉด ์ ์œ ๋œ๋‹ค.) realloc()์˜ ๋Œ€ํ‘œ์  ๋ฌธ์ œ๋Š” ์ •๋ง ํ˜น์‹œ๋‚˜ ๋ฉ”๋ชจ๋ฆฌ ํ• ๋‹น์ด ์‹คํŒจํ•  ๊ฒฝ์šฐ null์ด ๋ฐ˜ํ™˜๋˜๊ธฐ ๋•Œ๋ฌธ์— ๊ธฐ์กด์˜ ๋ฉ”๋ชจ๋ฆฌ๊ฐ€ ํ• ๋‹น๋˜์–ด ์žˆ๋Š” ํฌ์ธํ„ฐ๋ฅผ ์žƒ์–ด๋ฒ„๋ฆฌ๋Š” ๊ฒƒ์ด๋‹ค. ๋˜ํ•œ ์—ฌ๋Ÿฌ ํฌ์ธํ„ฐ๊ฐ€ ์ฃผ์†Œ๊ณต๊ฐ„์„ ๊ณต์œ ํ•˜๋Š” ์ƒํ™ฉ์ด๋ผ๋ฉด, realloc ํ•จ์ˆ˜๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด, ๋‹ค๋ฅธ ํฌ์ธํ„ฐ๋“ค์€ ์ด์ƒํ•œ ๊ณณ์„ ๊ฐ€๋ฆฌํ‚ค๊ฒŒ ๋œ๋‹ค. C++ ๋™์ ํ• ๋‹น(New) New๋ฅผ ํ†ตํ•ด์„œ ๋™์ ํ• ๋‹น์„ ์ง„ํ–‰ํ•œ๋‹ค. ํƒ€์ž…*ย ํฌ์ธํ„ฐ์ด๋ฆ„ย =ย newย ํƒ€์ž…; ๋ฐ˜ํ™˜๋ช…๋ น์–ด๋Š” deleteย ํฌ์ธํ„ฐ์ด๋ฆ„; ์•„๋ž˜๋Š” ์žฅ์  ๋ชฉ๋ก์ด๋‹ค. ํƒ€์ž… ์•ˆ์ •์„ฑ (์ž๋™์œผ๋กœ ํƒ€์ž… ๋ณ€ํ™˜) ์˜ˆ์™ธ ์ฒ˜๋ฆฌ (์‹คํŒจํ•˜๋ฉด ์˜ˆ์™ธ ์ฒ˜๋ฆฌ, ๋ฐ˜๋ฉด malloc์€ NULL๋งŒ ๋ฐ˜ํ™˜) ์ž๋™์œผ๋กœ ์‚ฌ์ด์ฆˆ ๊ณ„์‚ฐ (sizeof ํ•„์š”์—†์Œ) ๊ฐ์ฒด์˜ ์ƒ์„ฑ์ž๋ฅผ ํ˜ธ์ถœ(์ƒ์„ฑ์‹œ ์ดˆ๊ธฐํ™” ๊ฐ€๋Šฅ) ์Šค๋งˆํŠธ ํฌ์ธํ„ฐ new, delete๋Š” ์•„๋ž˜์˜ ๋ฌธ์ œ๊ฐ€ ์žˆ๋‹ค. ์šฐ๋ฆฌ๊ฐ€ ์ง์ ‘ ๊ด€๋ฆฌํ•ด์ค˜์•ผํ•œ๋‹ค๋Š” ๋ถˆํŽธํ•œ์ ์ด ์žˆ๋‹ค. ๋ฉ”๋ชจ๋ฆฌ ๋ˆ„์ˆ˜ : new ๋กœ ํ• ๋‹นํ•œ ๋ฉ”๋ชจ๋ฆฌ๋Š” ๋ฐ˜๋“œ์‹œ delete ๋กœ ํ•ด์ œํ•ด์•ผ ํ•˜๋ฉฐ ๊ทธ๋ ‡์ง€ ์•Š์œผ๋ฉด ๋ฉ”๋ชจ๋ฆฌ ๋ˆ„์ˆ˜๊ฐ€ ๋ฐœ์ƒํ•œ๋‹ค. ์ด๋Ÿฌํ•œ ์ฃผ์˜์‚ฌํ•ญ๋“ค๋กœ ์ธํ•ด C++11 ์ดํ›„์—๋Š” ์Šค๋งˆํŠธ ํฌ์ธํ„ฐ( std::unique_ptr , std::shared_ptr ๋“ฑ)๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ด ๊ถŒ์žฅ๋œ๋‹ค๊ณ  ํ•œ๋‹ค. ์Šค๋งˆํŠธ ํฌ์ธํ„ฐ๋Š” ์ž๋™ ๋ฉ”๋ชจ๋ฆฌ ๊ด€๋ฆฌ ๊ธฐ๋Šฅ์„ ์ œ๊ณตํ•˜๋ฏ€๋กœ ์œ„์™€ ๊ฐ™์€ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•  ์ˆ˜ ์žˆ๋‹ค. ๊ตฌ์กฐ์ฒด(struct)์™€ ๊ณต์šฉ์ฒด(union) ๊ตฌ์กฐ์ฒด๋Š” ๋‹ค์–‘ํ•œ ํฌ๊ธฐ์˜ ํƒ€์ž…์„ ๋ฉค๋ฒ„ ๋ณ€์ˆ˜๋กœ ๊ฐ€์งˆ ์ˆ˜ ์žˆ๋Š” ํƒ€์ž…์ž…๋‹ˆ๋‹ค. ๊ตฌ์กฐ์ฒด๋Š” ํฌ๊ธฐ๊ฐ€ ๊ฐ€์žฅ ํฐ ๋ฉค๋ฒ„ ๋ณ€์ˆ˜๋ฅผ ๊ธฐ์ค€์œผ๋กœ ๋ชจ๋“  ๋ฉค๋ฒ„ ๋ณ€์ˆ˜์˜ ๋ฉ”๋ชจ๋ฆฌ ํฌ๊ธฐ๋ฅผ ๋งž์ถ˜๋‹ค. ์ด๋•Œ ์ƒ๊ธฐ๋Š” ํŒจ๋”ฉ์„ ๋ฐ”์ดํŠธ ํŒจ๋”ฉ์ด๋ผ๊ณ  ํ•˜๋ฉฐ, ์ด๋•Œ ์ถ”๊ฐ€๋˜๋Š” ๋ฐ”์ดํŠธ๋ฅผ ํŒจ๋”ฉ ๋ฐ”์ดํŠธ(padding byte)๋ผ๊ณ  ํ•ฉ๋‹ˆ๋‹ค. ๋ฉ”๋ชจ๋ฆฌ ํ• ๋‹น ๊ทœ์น™ ๊ฐ€์žฅ ํฐ ๋ฉค๋ฒ„ ๋ณ€์ˆ˜๋ฅผ ๊ธฐ์ค€์œผ๋กœ ๋ฉ”๋ชจ๋ฆฌ ํ• ๋‹นํ•จ ๊ฐ€์žฅ ์ž‘์€ ๋ณ€์ˆ˜๋ถ€ํ„ฐ ์—ฐ์†์ ์œผ๋กœ ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ์ฑ„์›€, ๋งŒ์•ฝ ํ˜„์žฌ ๋‚จ์€ ๋ฉ”๋ชจ๋ฆฌํฌ๊ธฐ๋ณด๋‹ค ํƒ€์ž…์˜ ํฌ๊ธฐ๊ฐ€ ํฌ๋ฉด ์ถ”๊ฐ€์ ์œผ๋กœ ํ• ๋‹นํ•˜๊ณ , ๊ธฐ์กด์˜ ๋‚จ์€ ํฌ๊ธฐ๋ฅผ ํŒจ๋”ฉ์œผ๋กœ ์ฑ„์›Œ๋„ฃ์Œ ๊ณต์šฉ์ฒด ๊ณต์šฉ์ฒด(union)๋Š” union ํ‚ค์›Œ๋“œ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์„ ์–ธํ•˜๋ฉฐ, ๋Œ€๋‹ค์ˆ˜๋Š” ๊ตฌ์กฐ์ฒด์™€ ๊ฐ™์Šต๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ ๋ชจ๋“  ๋ฉค๋ฒ„ ๋ณ€์ˆ˜๊ฐ€ ํ•˜๋‚˜์˜ ๋ฉ”๋ชจ๋ฆฌ ๊ณต๊ฐ„์„ ๊ณต์œ  ํ•œ๋‹ค๋Š” ์ ๋งŒ์ด ๋‹ค๋ฅด๋‹ค. ํฌ๊ธฐ๊ฐ€ ๊ฐ€์žฅ ํฐ ๋ฉค๋ฒ„ ๋ณ€์ˆ˜์˜ ํฌ๊ธฐ๋กœ ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ํ• ๋‹น ๋ฐ›์Šต๋‹ˆ๋‹ค. ๊ทธ๋ ‡๊ธฐ์— ๋ฉค๋ฒ„ ๋ณ€์ˆ˜ ํ•˜๋‚˜๋งŒ์„ ์ˆ˜์ •ํ•ด๋„ ๋‹ค๋ฅธ ๊ฐ’๋“ค ๋˜ํ•œ ๋ณ€๊ฒฝ๋  ์ˆ˜ ์žˆ๋‹ค. 1 2 3 4 5 6 7 8 union ShareData { unsigned char a ; unsigned short b ; unsigned int c ; }; union ShareData data ; data . c = 0x12345678 ; ์œ„ ์ฝ”๋“œ์—์„œ a ์˜ ๊ฐ’์€ 0x78 ์ด ๋  ๊ฒƒ์ด๋ฉฐ, b ์˜ ๊ฐ’์€ 0x5678 ์ด ๋  ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๋ฐ˜๋Œ€๋กœ ๋น… ์—”๋””์•ˆ ์‹œ์Šคํ…œ์—์„œ๋Š” ๊ฒฐ๊ณผ๊ฐ€ ๋‹ค๋ฅผ ์ˆ˜ ์žˆ๋‹ค. ๋ฐ์ดํ„ฐ ์ €์žฅ๋ฐฉ์‹ ex) 0x12345678 ๋‘๊ฐœ๋กœ ๋์€ ๊ฒƒ์€ ํ•˜๋‚˜์˜ ์ฃผ์†Œ๋Š” ์ฃผ๋กœ ๋ฐ”์ดํŠธ ๋‹จ์œ„์ด๊ธฐ ๋•Œ๋ฌธ ๋ฆฌํ‹€์ธ๋””์•ˆ : ๋‚ฎ์€ ์ฃผ์†Œ์—, ํ•˜์œ„ ๋น„ํŠธ๊ฐ€ ๋„ฃ์–ด์ง(์ฆ‰ ์ฃผ์†Œ ์ˆœ์œผ๋กœ ํ‘œํ˜„ํ•˜๋ฉด 78,56,34,12) ๋น…์ธ๋””์•ˆ: ๋‚ฎ์€ ์ฃผ์†Œ์—, ์ƒ์œ„ ๋น„ํŠธ๊ฐ€ ๋„ฃ์–ด์ง(12,34,56,78) ๋ฆฌํ‹€ ์—”๋””์•ˆ ๋ฐฉ์‹์€ ๋‚ฎ์€ ์ฃผ์†Œ์— ๋ฐ์ดํ„ฐ์˜ ๋‚ฎ์€ ๋ฐ”์ดํŠธ(LSB : Least Significant Byte)๋ฅผ ์ €์žฅํ•˜๋Š” ๋ฐฉ์‹์ด๋‹ค. ์ด ๋ฐฉ์‹์€ ํ‰์†Œ ์‚ฌ๋žŒ์ด ์ˆซ์ž๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ์„ ํ˜• ๋ฐฉ์‹๊ณผ ๋ฐ˜๋Œ€๋กœ ๊ฑฐ๊พธ๋กœ ์ฝ์–ด์•ผ ํ•œ๋‹ค. [์ถœ์ฒ˜: ์œ„ํ‚คํ”ผ๋””์•„, https://ko.wikipedia.org/wiki/%EC%97%94%EB%94%94%EC%96%B8] ์ƒ์† ์ ‘๊ทผ์ œ์–ด ํด๋ž˜์Šค์•ˆ์— ์ ‘๊ทผ ์ œ์–ด ๋ฐฉ์‹์€ public, private, protected 3๊ฐ€์ง€๊ฐ€ ์žˆ๋‹ค. public : ์ ‘์ฒด ์ ‘๊ทผ ๊ฐ€๋Šฅ private : ํด๋ž˜์Šค ๋‚ด๋ถ€์—์„œ๋งŒ ๊ฐ€๋Šฅ, ์ ‘๊ทผ์ œ์–ด ํ‚ค์›Œ๋“œ๊ฐ€ ์—†์œผ๋ฉด private๊ฐ€ ๊ธฐ๋ณธ๊ฐ’ protected : ์ƒ์†๋ฐ›์€ โ€œํŒŒ์ƒโ€ํด๋ž˜์Šค, ์ž์‹ ์˜ ํด๋ž˜์Šค ๋‚ด๋ถ€์—์„œ๋งŒ ๊ฐ€๋Šฅ friend friend ํด๋ž˜์Šค๋Š” friend๋กœ ์„ ์–ธ๋œ ๋‹ค๋ฅธ ํด๋ž˜์Šค์˜ย private ๋ฐ protected ๋ฉค๋ฒ„์— ์ ‘๊ทผํ•  ์ˆ˜ ์žˆ๋‹ค. friend ํ•จ์ˆ˜๋Š” private ๋ฐ protected ๋ฉค๋ฒ„์— ์ ‘๊ทผํ•  ์ˆ˜ ์žˆ๋Š” ๊ถŒํ•œ์„ ๋ถ€์—ฌํ•  ์ˆ˜ ์žˆ๋‹ค. ์˜ค๋ฒ„๋กœ๋”ฉ๊ณผ ์˜ค๋ฒ„๋ผ์ด๋”ฉ ์˜ค๋ฒ„๋ผ์ด๋”ฉ์€ ๋™์ ์œผ๋กœ ์‹ค์ œ ๊ทธ ๊ฐ์ฒด์˜ ํƒ€์ž…์— ๋งž๋Š” ํ•จ์ˆ˜๋ฅผ ์‹คํ–‰ํ•˜๋Š” ๊ฒƒ์ด๊ณ , ์˜ค๋ฒ„๋กœ๋”ฉ์€ ์ •์ ์œผ๋กœ ๋งค๊ฐœ๋ณ€์ˆ˜์— ๋งž๋Š” ํ•จ์ˆ˜๋ฅผ ์„ ํƒํ•˜์—ฌ ์‹คํ–‰ํ•˜๋Š” ๊ฒƒ์ด๋‹ค. virtual์ด๋ž€? virtual ์€ C++์˜ ๋‹คํ˜•์„ฑ์„ ๊ตฌํ˜„ํ•˜๊ธฐ ์œ„ํ•œ ํ‚ค์›Œ๋“œ๋กœ abstract method ์ด๋‹ค. ์ด๋ฅผ ํ†ตํ•ด ํŒŒ์ƒํด๋ž˜์Šค์—์„œ ์˜ค๋ฒ„๋ผ์ด๋”ฉ๋  ์ˆ˜ ์žˆ๋‹ค. virtual ํ•จ์ˆ˜๋ฅผ ํ˜ธ์ถœํ•˜๋ฉด, ์ปดํŒŒ์ผ๋Ÿฌ๋Š” ๊ฐ์ฒด์˜ ํƒ€์ž…์ด ์•„๋‹Œ ์ฐธ์กฐ๋ฅผ ํ†ตํ•ด ๊ฐ€๋ฆฌํ‚ค๋Š” ์‹ค์ œ ๊ฐ์ฒด์˜ ํƒ€์ž…์„ ํ™•์ธ ํ•˜์—ฌ ์ ์ ˆํ•œ ํ•จ์ˆ˜๋ฅผ ํ˜ธ์ถœํ•œ๋‹ค. ๋‚ด๋ถ€์ ์œผ๋กœ๋Š” ๊ฐ€์ƒ ํ•จ์ˆ˜ ํ…Œ์ด๋ธ” ์„ ์‚ฌ์šฉํ•˜์—ฌ, ํ˜„์žฌ์˜ ํƒ€์ž…์ด ์•„๋‹Œ ์‹ค์ฒด๋ฅผ ๋งตํ•‘ํ•œ๋‹ค. ์•„๋ž˜์˜ ์ฝ”๋“œ์—์„œ (1) ์˜ ๊ฒฝ์šฐ์—์„œ Base ํƒ€์ž…์˜ ํ•จ์ˆ˜๊ฐ€ ์•„๋‹Œ ์‹ค์ฒด์˜ ํ•จ์ˆ˜ Derived show, display๋ฅผ ๋งตํ•‘ํ•œ๋‹ค. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 class Base { public: virtual void show () { cout << "Base class show function" << endl ; } virtual void display () { cout << "Base class display function" << endl ; } }; class Derived : public Base { public: void show () override { cout << "Derived class show function" << endl ; } void display () override { cout << "Derived class display function" << endl ; } }; int main () { ** ( 1 ) ** Base * basePtr = new Derived (); } ์—…์บ์ŠคํŒ…๊ณผ ๋‹ค์šด์บ์ŠคํŒ… ์—…์บ์ŠคํŒ… = ํ•˜์œ„ ํƒ€์ž…์—์„œ ์ƒ์œ„ ํƒ€์ž…์œผ๋กœ ์ฐธ์กฐํ•˜๋Š” ๊ฒƒ์ด๋‹ค. ๋‹ค์šด ์บ์ŠคํŒ…์€ ๋ฐ˜๋Œ€๋กœ ์ƒ์œ„์—์„œ ํ•˜์œ„๋กœ ์ฐธ์กฐํ•œ๋‹ค. ์—…์บ์ŠคํŒ…์€ ์•ˆ์ „ํ•˜๋‚˜, ๋‹ค์šด์บ์ŠคํŒ…์€ ๋ถˆ์™„์ „ํ•˜๋‹ค. ํƒˆ ๊ฒƒ์ด๋ผ๋Š” ์ƒ์œ„ํƒ€์ž…์—์„œ ์ž๋™์ฐจ๋ผ๋Š” ํ•˜์œ„ํƒ€์ž…์œผ๋กœ ์บ์ŠคํŒ…ํ•˜๋ฉด, ๋งŒ์•ฝ ์‹ค์ฒด๊ฐ€ ๋น„ํ–‰๊ธฐ๋ผ๋ฉด ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ•œ๋‹ค. 1 2 Derived d ; Base * ptr = & d ; // ์—…์บ์ŠคํŒ… String C++์˜ std::string ํด๋ž˜์Šค์™€ C ์Šคํƒ€์ผ ์ŠคํŠธ๋ง ๊ฐ„์˜ ์ฃผ์š” ์ฐจ์ด์ ์€ ์•„๋ž˜์™€ ๊ฐ™๋‹ค. C ์Šคํƒ€์ผ ์ŠคํŠธ๋ง : ๋ฌธ์ž๋“ค์˜ ๋ฐฐ์—ด๋กœ, ๋„( '\0' ) ๋ฌธ์ž๋กœ ์ข…๋ฃŒ๋œ๋‹ค. ์˜ˆ: char myStr[] = "Hello"; ๋งˆ์ง€๋ง‰ ๋ฌธ์ž์—ด์— ๋„ ๋ฌธ์ž๊ฐ€ ์ž…๋ ฅ๋œ๋‹ค. std::string : C++ ํ‘œ์ค€ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์˜ ํด๋ž˜์Šค๋กœ์„œ, ๋ฌธ์ž๋“ค์˜ ๋™์  ๋ฐฐ์—ด๊ณผ ๊ด€๋ จ๋œ ๋ฉ”์„œ๋“œ๋“ค๋กœ ๊ตฌ์„ฑ๋œ๋‹ค. ํฌ๊ธฐ์กฐ์ ˆ: C์Šคํƒ€์ผ์€ ๋ถˆ๊ฐ€๋Šฅํ•˜์ง€๋งŒ, C++ ์Šคํƒ€์ผ์€ ๊ฐ€๋Šฅํ•˜๋‹ค. ๋‚ด๋ถ€์ ์œผ๋กœ ๋ฉ”๋ชจ๋ฆฌ ๊ด€๋ฆฌ๋ฅผ ํ•œ๋‹ค. 1 2 3 4 5 6 char string1 [ 5 ] = "1234" ; printf ( "%s" , string1 ); abc [ 3 ] = '\0' ; printf ( "%s" , string1 ); // ์—๋Ÿฌ ๋ฐœ์ƒ, ํฌ๊ธฐ๋ฅผ ๋„˜์–ด์„ฌ (12345'\0') ์ด 6๊ฐœ์˜ ๋ฌธ์ž๊ฐ€ ๋Œ€์ž…๋˜๊ธฐ์—, ํฌ๊ธฐ๋ฅผ ๋„˜์–ด์„ฌ char string2 [ 5 ] = "12345" ; ์ธ๋ผ์ธ ํ•จ์ˆ˜ ์œ„์™€ ๊ฐ™์ด C++์—์„œ ํ•จ์ˆ˜์˜ ํ˜ธ์ถœ ์€ ๊ฝค ๋ณต์žกํ•œ ๊ณผ์ •์„ ๊ฑฐ์น˜๋ฏ€๋กœ, ์•ฝ๊ฐ„์˜ ์‹œ๊ฐ„์ด ๊ฑธ๋ฆฌ๊ฒŒ ๋ฉ๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ ํ•จ์ˆ˜์˜ ์‹คํ–‰ ์‹œ๊ฐ„์ด ๋งค์šฐ ์งง๋‹ค๋ฉด, ํ•จ์ˆ˜ ํ˜ธ์ถœ์— ๊ฑธ๋ฆฌ๋Š” ์‹œ๊ฐ„๋„ ๋ถ€๋‹ด์ด ๋  ์ˆ˜ ์žˆ๋‹ค. ์ธ๋ผ์ธ ํ•จ์ˆ˜๋Š” ํ˜ธ์ถœ๋  ๋•Œ ์ผ๋ฐ˜์ ์ธ ํ•จ์ˆ˜์˜ ํ˜ธ์ถœ ๊ณผ์ •์„ ๊ฑฐ์น˜์ง€ ์•Š๊ณ  , ํ•จ์ˆ˜์˜ ๋ชจ๋“  ์ฝ”๋“œ๋ฅผ ํ˜ธ์ถœ๋œ ์ž๋ฆฌ์— ๋ฐ”๋กœ ์‚ฝ์ž…ํ•˜๋Š” ๋ฐฉ์‹์˜ ํ•จ์ˆ˜์ด๋‹ค. ์ด ๋ฐฉ์‹์€ ํ•จ์ˆ˜๋ฅผ ํ˜ธ์ถœํ•˜๋Š” ๋ฐ ๊ฑธ๋ฆฌ๋Š” ์‹œ๊ฐ„์€ ์ ˆ์•ฝ๋˜๋‚˜, ์žฌ๊ท€์™€ ๊ฐ™์€ ํ•จ์ˆ˜์˜ ์—ฌ๋Ÿฌ ์ด์ ์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์—†๋‹ค. ์ธ๋ผ์ธ ํ•จ์ˆ˜ ์‚ฌ์šฉ์‹œ ๋‹จ์ ์€ ์ปดํŒŒ์ผ ์‹œ๊ฐ„(์ธ๋ผ์ธ ํ•จ์ˆ˜ ์น˜ํ™˜) ์ฆ๊ฐ€, ๋””๋ฒ„๊น… ์‹œ๊ฐ„ ์ฆ๊ฐ€, ์žฌ๊ท€ ๋ถˆ๊ฐ€๋Šฅ์ด ์žˆ๋‹ค. ํ•จ์ˆ˜ ํฌ์ธํ„ฐ ํ•จ์ˆ˜ ํฌ์ธํ„ฐ๋Š” ๋ง ๊ทธ๋Œ€๋กœ ํ•จ์ˆ˜๋ฅผ ๊ฐ€๋ฆฌํ‚ค๋Š” ํฌ์ธํ„ฐ๋‹ค. ํ”„๋กœ๊ทธ๋žจ์—์„œ ์ •์˜๋œ ํ•จ์ˆ˜๋Š” ํ”„๋กœ๊ทธ๋žจ์ด ์‹คํ–‰๋  ๋•Œ ๋ชจ๋‘ ๋ฉ”์ธ ๋ฉ”๋ชจ๋ฆฌ์— ์˜ฌ๋ผ๊ฐ€๋ฉฐ ํ•จ์ˆ˜ ํฌ์ธํ„ฐ๋Š” ํ•จ์ˆ˜์˜ ์ฒซ ์ฃผ์†Œ๋ฅผ ๊ฐ€๋ฆฌํ‚จ๋‹ค. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 ** double ( * calc )( double , double ) = NULL ; // ํ•จ์ˆ˜ ํฌ์ธํ„ฐ ์„ ์–ธ** double num1 = 3 , num2 = 4 , result = 0 ; char oper = '*' ; switch ( oper ) { case '+' : calc = Add ; break ; case '-' : calc = Sub ; break ; case '*' : calc = Mul ; break ; case '/' : calc = Div ; break ; default: cout << "์‚ฌ์น™์—ฐ์‚ฐ(+, -, *, /)๋งŒ์„ ์ง€์›ํ•ฉ๋‹ˆ๋‹ค." ; } break ; } STL STL ์ปจํ…Œ์ด๋„ˆ ์ •๋ฆฌ ๊ทธ์™ธ volatile ํ‚ค์›Œ๋“œ๋ฅผ ํ†ตํ•ด ์ปดํŒŒ์ผ๋Ÿฌ์—๊ฒŒ ์ตœ์ ํ™”๋ฅผ ์ œํ•œํ•˜๋Š” ์šฉ๋„๋กœ ์‚ฌ์šฉํ•œ๋‹ค. voliatile๋กœ ์„ ์–ธํ•œ ๋ณ€์ˆ˜๋Š” ์ปดํŒŒ์ผ๋Ÿฌ๊ฐ€ ํ•ด๋‹น ๋ณ€์ˆ˜๋ฅผ ์ตœ์ ํ™”์—์„œ ์ œ์™ธํ•˜์—ฌ ํ•ญ์ƒ ๋ฉ”๋ชจ๋ฆฌ์— ์ ‘๊ทผํ•˜๋„๋ก ํ•˜๋Š” ํ‚ค์›Œ๋“œ์ž…๋‹ˆ๋‹ค. ์•„๋ž˜์™€ ๊ฐ™์€ ๊ฒฝ์šฐ ์ปดํŒŒ์ผ๋Ÿฌ๋Š” ๋‘๋ฒˆ์งธ ์ฝ”๋“œ๋กœ ํ•ด์„ํ•˜์—ฌ ์ตœ์ ํ™”ํ•œ๋‹ค. ์ด๋ฅผ ๋ฐฉ์ง€ํ•˜๊ธฐ ์œ„ํ•ด volatile ํ‚ค์›Œ๋“œ๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค. [๊ธฐ์กด ์ฝ”๋“œ] 1 2 3 4 5 6 7 8 static int foo ; void bar ( void ) { foo = 0 ; while ( foo != 255 ); } [์ปดํŒŒ์ผ๋Ÿฌ๊ฐ€ ์ตœ์ ํ™”ํ•œ ์ฝ”๋“œ] 1 2 3 4 5 6 void bar_optimized ( void ) { foo = 0 ; while ( true ); } ์ดˆ๊ธฐํ™” ์ด๊ฑฐ๋Š” ๋‹ค๋ฅธ ๋ธ”๋กœ๊ทธ๋ฅผ ์ฐธ๊ณ ํ•˜๋‹ค๊ฐ€ ๋ฐœ๊ฒฌํ•œ ๊ฒƒ์ด๋‹ค. ๊ฒŒ์ž„ ํšŒ์‚ฌ ๋ฉด์ ‘์—์„œ ์•„๋ž˜์™€ ๊ฐ™์ด ์ดˆ๊ธฐํ™” ๋ฐฉ๋ฒ•์„ ๋ฌผ์–ด๋ดค๋‹ค๊ณ  ํ•œ๋‹ค. ๋ชฐ๋ž๋˜ ์‚ฌ์‹ค์ธ๋ฐ ์•„๋ž˜์™€ ์ดˆ๊ธฐํ™”๋ฅผ ์ง„ํ–‰ํ•˜๋ฉด ์—ฐ์‚ฐ์ด ํ•˜๋‚˜๋กœ ์ค„์–ด๋“ ๋‹ค๊ณ  ํ•œ๋‹ค. 1 2 3 4 5 Car () { ๋ฐ”ํ€ด = 4 ; ์—”์ง„ = 1 ; ๊ธฐ๋ฆ„ = 0 ; } 1 2 3 Car () : ๋ฐ”ํ€ด ( 4 ), ์—”์ง„ ( 1 ), ๊ธฐ๋ฆ„ ( 0 ) { } ์ƒ์„ฑํ›„ ์ดˆ๊ธฐํ™”๊ฐ€ ํ•œ๋ฒˆ์— ์ง„ํ–‰ํ•˜๊ณ , ์ƒ์„ฑ์‹œ ์ดˆ๊ธฐํ™”๋Š” ํ•œ๋ฒˆ์˜ ์—ฐ์‚ฐ๊ณผ์ •์ด ๋” ํ•„์š”ํ•˜๋‹ˆ ๋น„์šฉ์ด 2๋ฐฐ๋ผ๊ณ  ํ•œ๋‹ค. ์ฐธ๊ณ ์ž๋ฃŒ https://tcpschool.com/c/c_intro_programming https://velog.io/@mardi2020/C-๋ฉด์ ‘-์งˆ๋ฌธ-์ •๋ฆฌ https://se-jung-h.tistory.com/entry/C-C-๊ธฐ์ˆ -๋ฉด์ ‘-์งˆ๋ฌธ https://www.hanbit.co.kr/channel/category/category_view.html?cms_code=CMS1726560277&cate_cd=
Markdown
[![avatar](https://cdn.jsdelivr.net/gh/han-0315/han-0315.github.io@main/assets/img/avatar-new.png)](https://www.handongbee.com/) # [86\.5๐ŸŒก๏ธ](https://www.handongbee.com/) ์ด๊ฒƒ์ €๊ฒƒ ๊ณต๋ถ€ํ•œ ๋‚ด์šฉ์„ ์˜ฌ๋ฆฝ๋‹ˆ๋‹ค. - [HOME](https://www.handongbee.com/) - [CATEGORIES](https://www.handongbee.com/categories/) - [ACTIVITY](https://www.handongbee.com/activity/) - [ABOUT](https://www.handongbee.com/about/) [Home](https://www.handongbee.com/) ํ•œ ํŽ˜์ด์ง€์— Cpp ๋ชจ๋‘ ์ •๋ฆฌํ•˜๊ธฐ Post Cancel # ํ•œ ํŽ˜์ด์ง€์— Cpp ๋ชจ๋‘ ์ •๋ฆฌํ•˜๊ธฐ Posted Nov 15, 2023 By *[Dongbee](https://www.handongbee.com/posts/Cpp%EC%A0%95%EB%A6%AC/)* *26 min* read ํ•œ ํŽ˜์ด์ง€๋กœ ๋๋‚ด๋Š” C++ ๋ฌธ๋ฒ• ### C++ vs C C++์€ ๊ฐ์ฒด์ง€ํ–ฅ์  ์–ธ์–ด์ธ Simula์˜ ๊ฐœ๋…์„ C์–ธ์–ด์— ์ถ”๊ฐ€ํ•˜์—ฌ ๋งŒ๋“  ํ”„๋กœ๊ทธ๋ž˜๋ฐ์–ธ์–ด์ด๋‹ค. ์ œ๋„ค๋ฆญ, ๊ฐ์ฒด์ง€ํ–ฅ, ๊ตฌ์กฐ์  ํ”„๋กœ๊ทธ๋ž˜๋ฐ์ด ๊ฐ€๋Šฅํ•˜๋‹ค๋Š” ์žฅ์ ์ด ์žˆ๋‹ค. ### ์ฝ”๋“œ ์‹คํ–‰ ๋ฐฉ์‹ ์†Œ์Šค์ฝ”๋“œ๊ฐ€ ์‹คํ–‰ํŒŒ์ผ์ด ๋˜์–ด์•ผ, ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ๋‹ค. 1. ์„ ํ–‰์ฒ˜๋ฆฌ๊ธฐ: โ€œ\#โ€ ๋ฌธ์ž๋กœ ์‹œ์ž‘ํ•˜๋Š” ์„ ํ–‰์ฒ˜๋ฆฌ ์ง€์‹œ๋ฌธ(\#define)์„ ์ฒ˜๋ฆฌํ•œ๋‹ค. ์ปดํŒŒ์ผ๋Ÿฌ๊ฐ€ ์ž‘์—…ํ•˜๊ธฐ ์ข‹๋„๋ก ์†Œ์Šค๋ฅผ ์žฌ๊ตฌ์„ฑํ•˜๋Š” ์—ญํ• ์„ ํ•œ๋‹ค. 2. ์ปดํŒŒ์ผ๋Ÿฌ: ์†Œ์Šค์ฝ”๋“œ๋ฅผ ๊ธฐ๊ณ„์–ด๋กœ ๋ณ€ํ™˜ํ•œ๋‹ค.(`.o`, `.obj`) 3. ๋ง์ปค: ์˜ค๋ธŒ์ ํŠธ ํŒŒ์ผ๊ณผ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ํŒŒ์ผ, ์‹œ๋™์ฝ”๋“œ(OS์™€์˜ ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ๋‹ด๋‹นํ•จ)๋ฅผ ํ•ฉ์ณ ํ•˜๋‚˜์˜ ์‹คํ–‰ ํŒŒ์ผ์„ ๋งŒ๋“ ๋‹ค. ์šฐ๋ฆฌ๋Š” ๋ง์ปค์—์„œ ๋งŒ๋“ค์–ด์ง„ ์‹คํ–‰ํŒŒ์ผ์„ ํ†ตํ•ด ํ”„๋กœ๊ทธ๋žจ์„ ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ๋‹ค. vscode์—์„œ Code Runner๋ฅผ ํ†ตํ•ด Cpp ํŒŒ์ผ์„ ์‹คํ–‰์‹œํ‚ค๋ฉด ํ„ฐ๋ฏธ๋„์—์„œ ์ž๋™์œผ๋กœ ๋‹ค์Œ๊ณผ ๊ฐ™์€ ๋ช…๋ น์–ด๊ฐ€ ์ž…๋ ฅ๋œ๋‹ค. `` ์ด๋ฅผ ๋‹จ๊ณ„๋ณ„๋กœ ๋ถ„์„ํ•˜๋ฉด, ๋””๋ ‰ํ„ฐ๋ฆฌ๋ฅผ ์ž‘์—… ํ™˜๊ฒฝ์œผ๋กœ ์˜ฎ๊ธฐ๊ณ  g++ ์ปดํŒŒ์ผ๋Ÿฌ๋ฅผ ํ†ตํ•ด ์ฝ”๋“œ๋ฅผ ์ฝ์–ด a.out ์‹คํ–‰ํŒŒ์ผ์„ ๋งŒ๋“ ๋‹ค. ์ดํ›„ ํ•ด๋‹น ์‹คํ–‰ํŒŒ์ผ์„ ์‹คํ–‰์‹œํ‚จ๋‹ค. ### ํƒ€์ž… ๋ณ€ํ™˜ - ๋ฌต์‹œ์  ๋ณ€ํ™˜ ๋งŒ์•ฝ, ์„œ๋กœ ๋‹ค๋ฅธ ํƒ€์ž…์œผ๋กœ ์—ฐ์‚ฐ์„ ์ง„ํ–‰ํ•˜๋ฉด, ๊ฒฐ๊ณผ๋ฌผ์˜ ํƒ€์ž…์€ ๋” ๋ฒ”์œ„๊ฐ€ ํฐ ์ชฝ์œผ๋กœ ๋ณ€ํ™˜๋œ๋‹ค. ์‚ฐ์ˆ  ์—ฐ์‚ฐ ์‹œ์—๋Š” ๋ฐ์ดํ„ฐ์˜ ์†์‹ค์ด ์ตœ์†Œํ™”๋˜๋Š” ๋ฐฉํ–ฅ์œผ๋กœ ๋ฌต์‹œ์  ํƒ€์ž… ๋ณ€ํ™˜์ด ์ง„ํ–‰๋ฉ๋‹ˆ๋‹ค. - ๋ช…์‹œ์  ๋ณ€ํ™˜ 1. (๋ณ€ํ™˜ํ• ํƒ€์ž…) ๋ณ€ํ™˜ํ• ๋ฐ์ดํ„ฐ // C์–ธ์–ด์™€ C++ ๋‘˜ ๋‹ค ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•จ. 2. ๋ณ€ํ™˜ํ• ํƒ€์ž… (๋ณ€ํ™˜ํ• ๋ฐ์ดํ„ฐ) // C++์—์„œ๋งŒ ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•จ. - `static` ์ •์  ๋ณ€์ˆ˜๋ฅผ ์˜๋ฏธํ•˜๊ณ , ์ด๋Š” ํ•จ์ˆ˜์˜ ํ˜ธ์ถœ์ด ๋๋‚˜๋„ ์‚ฌ๋ผ์ง€๋Š” ์ง€์—ญ ๋ณ€์ˆ˜์™€๋Š” ๋‹ค๋ฅด๊ฒŒ ์ง€์†์ ์œผ๋กœ **๋ฉ”๋ชจ๋ฆฌ ๊ณต๊ฐ„์„ ์œ ์ง€**ํ•œ๋‹ค. - **๊ฐ™์€ ์ด๋ฆ„์˜ ๋ณ€์ˆ˜ ์ ‘๊ทผ ์ˆœ์œ„** ๋จผ์ € **๊ฐ€๊นŒ์šด ๋ธ”๋ฝ๋‹จ์œ„**์— ์ƒ์„ฑ๋œ ์ง€์—ญ ๋ณ€์ˆ˜์—์„œ๋ถ€ํ„ฐ ์ ์  ๋ฉ€๋ฆฌ๋‚˜๊ฐ„๋‹ค. ์ฆ‰ ๊ฐ™์€ ์ด๋ฆ„์œผ๋กœ ์„ ์–ธ๋œ ์ง€์—ญ๋ณ€์ˆ˜์™€ ์ „์—ญ๋ณ€์ˆ˜๊ฐ€ ์žˆ์œผ๋ฉด ์ง€์—ญ๋ณ€์ˆ˜๋ฅผ ์‚ฌ์šฉํ•˜๊ฒŒ ๋œ๋‹ค. ### Auto C++11 ๋ฒ„์ „์—์„œ ์ƒ๊ฒจ๋‚ฌ๊ณ , ์ปดํŒŒ์ผ๋Ÿฌ ๋‹จ๊ณ„์—์„œ ์ž๋™์œผ๋กœ ํƒ€์ž…์„ ํ• ๋‹นํ•œ๋‹ค. ์‹œํ—˜์—์„œ๋Š” ํŽธํ•˜์ง€๋งŒ, ํƒ€์ž…์ด ํ—ท๊ฐˆ๋ฆด ๋•Œ๋Š” ์“ฐ์ง€ ์•Š๋Š” ๊ฒƒ์ด ์ข‹๋‹ค. ### ์ƒ์ˆ˜ํ‘œํ˜„ 1. ๋ฆฌํ„ฐ๋Ÿด ์ƒ์ˆ˜: ๋ง๊ทธ๋Œ€๋กœ, ์ˆซ์ž๋ฅผ ์˜๋ฏธํ•˜๋ฉฐ C++์—์„œ ์ˆซ์ž๋“ค์€ ์ƒ์ˆ˜๋กœ ํ‘œํ˜„๋œ๋‹ค. ex) 1.1 or 3 2. ์‹ฌ๋ณผ๋ฆญ ์ƒ์ˆ˜: ์•ž์— const๋ฅผ ๋ถ™์—ฌ ์ƒ์ˆ˜์ฒ˜๋Ÿผ ์‚ฌ์šฉํ•œ๋‹ค. ์„ ์–ธ๊ณผ ๋™์‹œ์— ์ดˆ๊ธฐํ™”ํ•˜๋ฉฐ, ๊ฐ’์„ ์ˆ˜์ •ํ•  ์ˆ˜ ์—†๋‹ค. ์‹ฌ๋ณผ๋ฆญ ์ƒ์ˆ˜๋Š” ์•„๋ž˜์™€ ๊ฐ™์ด ๊ฐ’์ด ๋ณ€๊ฒฝ๋˜๋ฉด ์•ˆ๋  ๋•Œ ์‚ฌ์šฉํ•œ๋‹ค. ์ฃผ๋กœ for, ํ•จ์ˆ˜ ๋“ฑ ํŒŒ๋ผ๋ฏธํ„ฐ๋กœ ๋„˜๊ฒจ์ค„ ๋•Œ๋‚˜ ์‚ฌ์ด์ฆˆ์™€ ๊ฐ™์€ ๋ณ€์ˆ˜๋ฅผ ์ง€์ •ํ•  ๋•Œ ์‚ฌ์šฉํ•œ๋‹ค. `` ### ์—ฐ์‚ฐ์ž - ๋…ผ๋ฆฌ์—ฐ์‚ฐ์ž ๋…ผ๋ฆฌ๋Š” `&&`, `||`, `!`๊ฐ€ ์žˆ๋‹ค๋Š” ๊ฒƒ๋งŒ ๊ธฐ์–ตํ•˜๋ฉด ๋œ๋‹ค. - ๋น„ํŠธ์—ฐ์‚ฐ์ž | & | ๋Œ€์‘๋˜๋Š” ๋น„ํŠธ๊ฐ€ ๋ชจ๋‘ 1์ด๋ฉด 1์„ ๋ฐ˜ํ™˜ํ•จ. (๋น„ํŠธ AND ์—ฐ์‚ฐ) | | |---|---|---| | | | ๋Œ€์‘๋˜๋Š” ๋น„ํŠธ ์ค‘์—์„œ ํ•˜๋‚˜๋ผ๋„ 1์ด๋ฉด 1์„ ๋ฐ˜ํ™˜ํ•จ. (๋น„ํŠธ OR ์—ฐ์‚ฐ) | | ^ | ๋Œ€์‘๋˜๋Š” ๋น„ํŠธ๊ฐ€ ์„œ๋กœ ๋‹ค๋ฅด๋ฉด 1์„ ๋ฐ˜ํ™˜ํ•จ. (๋น„ํŠธ XOR ์—ฐ์‚ฐ) | | | ~ | ๋น„ํŠธ๋ฅผ 1์ด๋ฉด 0์œผ๋กœ, 0์ด๋ฉด 1๋กœ ๋ฐ˜์ „์‹œํ‚ด. (๋น„ํŠธ NOT ์—ฐ์‚ฐ, 1์˜ ๋ณด์ˆ˜) | | | ยซ | ์ง€์ •ํ•œ ์ˆ˜๋งŒํผ ๋น„ํŠธ๋“ค์„ ์ „๋ถ€ ์™ผ์ชฝ์œผ๋กœ ์ด๋™์‹œํ‚ด. (left shift ์—ฐ์‚ฐ) | | | ยป | ๋ถ€ํ˜ธ๋ฅผ ์œ ์ง€ํ•˜๋ฉด์„œ ์ง€์ •ํ•œ ์ˆ˜๋งŒํผ ๋น„ํŠธ๋ฅผ ์ „๋ถ€ ์˜ค๋ฅธ์ชฝ์œผ๋กœ ์ด๋™์‹œํ‚ด. (right shift ์—ฐ์‚ฐ) | | - ์‚ผํ•ญ์—ฐ์‚ฐ์ž(์กฐ๊ฑด์‹ ? ๋ฐ˜ํ™˜๊ฐ’1 : ๋ฐ˜ํ™˜๊ฐ’2) - ํฌ์ธํ„ฐ ์—ฐ์‚ฐ์ž - ์„ ์–ธ: ํฌ์ธํ„ฐ๋Š” ์ฃผ์†Œ๋ฅผ ๊ฐ€๋ฆฌํ‚จ๋‹ค. `` - ์ฃผ์†Œ์—ฐ์‚ฐ์ž(&): &์€ ์ฐธ์กฐ ๋ณ€์ˆ˜๋กœ๋„ ์‚ฌ์šฉ๋œ๋‹ค. - ์ฐธ์กฐ์—ฐ์‚ฐ์ž(\*) - ํฌ์ธํ„ฐ ์—ฐ์‚ฐ(++, โ€”): ํ•ด๋‹น ํฌ์ธํ„ฐ์˜ ํƒ€์ž…์˜ ํฌ๊ธฐ๋งŒํผ ์ฆ๊ฐ€, ๊ฐ์†Œํ•œ๋‹ค.(ex. int ํ˜•์ด๋ฉด 4๋ฐ”์ดํŠธ๋งŒํผ) ### ๋ฐฐ์—ด๊ณผ ํฌ์ธํ„ฐ ๋ฐฐ์—ด๊ณผ ํฌ์ธํ„ฐ๋Š” ์„œ๋กœ ๋Œ€์ฒดํ•  ์ˆ˜ ์žˆ๋‹ค. ๋ฐฐ์—ด์˜ ์ด๋ฆ„์€ ํฌ์ธํ„ฐ์™€ ๊ฑฐ์˜ ์œ ์‚ฌํ•˜๋‹ค. ์ƒ์ˆ˜๋ผ๋Š” ์ (๋‹ค๋ฅธ ๋ฐฐ์—ด์„ ๋Œ€์ž…ํ•  ์ˆ˜ ์—†๋‹ค๋Š” ์ ) `ex) arr1 โ‰  arr2` ์„ ์ œ์™ธํ•˜๊ณ ๋Š” ๋˜‘๊ฐ™๋‹ค. ๋ฐฐ์—ด์˜ ์ด๋ฆ„์„ ๊ฐ€์ง€๊ณ  ํฌ์ธํ„ฐ์ฒ˜๋Ÿผ ์—ฐ์‚ฐ์„ ํ•  ์ˆ˜ ์žˆ๋‹ค. `` โ€œ๋ฐฐ์—ด ํ˜น์€ ํฌ์ธํ„ฐ์™€ ๊ด€๋ จ๋œ ์—ฐ์‚ฐ์„ ํ•  ๋•Œ๋Š” ์ฃผ์˜ํ•ด์•ผํ•œ๋‹ค. ์‹ค์ œ ์‚ฌ์šฉํ•˜์ง€ ์•Š๋Š” ๋ฉ”๋ชจ๋ฆฌ ์˜์—ญ(ex. ๋ฐฐ์—ด์˜ ํฌ๊ธฐ๋ฅผ ๋„˜์–ด์„  ์ ‘๊ทผ)์„ ํ•  ๋•Œ ์ปดํŒŒ์ผ๋Ÿฌ๋Š” ์˜ค๋ฅ˜๋ฅผ ๋ฐœ์ƒ์‹œํ‚ค์ง€ ์•Š๊ณ  ํ”„๋กœ๊ทธ๋žจ์„ ๋™์ž‘์‹œํ‚จ๋‹ค.โ€ ### ์ „๋‹ฌ ๋ฐฉ์‹ **\[์–‡์€ ๋ณต์‚ฌ vs ๊นŠ์€ ๋ณต์‚ฌ\]** โ€œ๋‹จ์ง€ ์ฃผ์†Œ๊ณต๊ฐ„๋งŒ ๊ฐ€๋ฅดํ‚ค๋Š” ๊ฐ€? ์ƒˆ๋กœ์šด ์ฃผ์†Œ๊ณต๊ฐ„์„ ํ• ๋‹นํ•˜๋Š”๊ฐ€?โ€๊ฐ€ ๊ธฐ์ค€์ด๋œ๋‹ค. - ์–‡์€ ๋ณต์‚ฌ๋Š” **์–•์€ ๋ณต์‚ฌ์˜ ๊ฒฝ์šฐ ๋™์  ํ• ๋‹น์„ ๋ฐ›์€ ๋ณ€์ˆ˜์˜ ์ฃผ์†Œ๊ฐ’์„ ๊ณต์œ ํ•œ๋‹ค.** - ๊นŠ์€ ๋ณต์‚ฌ๋Š” **๊นŠ์€ ๋ณต์‚ฌ๋Š” ์ƒˆ๋กœ์ด ๋™์ ํ• ๋‹น์„ ๋ฐ›๊ณ , ์›๋ณธ์˜ ๋ฐ์ดํ„ฐ๋ฅผ ๋ณต์‚ฌํ•œ๋‹ค.(์™„์ „ํžˆ ๋‹ค๋ฅธ ๊ฐœ๋ณ„์ ์ธ ๊ฐ์ฒด๊ฐ€ ๋œ๋‹ค.)** **\[call by value vs call by reference\]** C์–ธ์–ด์—์„œ ํ•จ์ˆ˜ ํŒŒ๋ผ๋ฏธํ„ฐ ๋ฐฉ์‹์€ ๊ฐ’์— ์˜ํ•œ ์ „๋‹ฌ ๋ฐฉ์‹์„ ๋”ฐ๋ฅธ๋‹ค. ๋งค๊ฐœ๋ณ€์ˆ˜์˜ ๊ฐ’๋งŒ ๋ณต์‚ฌํ•œ๋‹ค. ๋งŒ์•ฝ ์ฐธ์กฐ ์—ฐ์‚ฐ์ž๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด, ์ฐธ์กฐ์— ์˜ํ•œ ์ „๋‹ฌ์„ ์ง„ํ–‰ํ•œ๋‹ค. ### Namespace ์ด๋ฆ„ ์ถฉ๋Œ ๋ฌธ์ œ๋ฅผ C++์—์„œ๋Š” **๋„ค์ž„์ŠคํŽ˜์ด์Šค(namespace)**๋ฅผ ํ†ตํ•ด ํ•ด๊ฒฐํ•˜๊ณ  ์žˆ๋‹ค. ์ ‘๊ทผ ๋ฐฉ๋ฒ•: ๋„ค์ž„์ŠคํŽ˜์ด์Šค์— ์ ‘๊ทผํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” **๋ฒ”์œ„ ์ง€์ • ์—ฐ์‚ฐ์ž**(`::,` scope resolution operator)๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ, ํ•ด๋‹น ์ด๋ฆ„์„ ํŠน์ • ๋„ค์ž„์ŠคํŽ˜์ด์Šค๋กœ ์ œํ•œํ•˜๋ฉด ๋œ๋‹ค. ๋„ค์ž„์ŠคํŽ˜์ด์Šค์— ์†ํ•œ ์ด๋ฆ„์„ ์‚ฌ์šฉํ•  ๋•Œ๋งˆ๋‹ค **๋งค๋ฒˆ ๋ฒ”์œ„ ์ง€์ • ์—ฐ์‚ฐ์ž๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์ด๋ฆ„์„ ์ œํ•œ**ํ•˜๋Š” ๊ฒƒ์€ ๋งค์šฐ ๋ถˆํŽธํ•˜๋‹ค. ๋˜ํ•œ, ๊ธธ์–ด์ง„ ์ฝ”๋“œ๋กœ ์ธํ•ด ๊ฐ€๋…์„ฑ ๋˜ํ•œ ๋–จ์–ด์ง€๊ฒŒ ๋œ๋‹ค. C++์—์„œ๋Š” ์ด๋Ÿฌํ•œ ๋ถˆํŽธํ•จ์„ ํ•ด์†Œํ•  ์ˆ˜ ์žˆ๋„๋ก ๋‹ค์Œ๊ณผ ๊ฐ™์€ ๋ฐฉ๋ฒ•์„ ์ œ๊ณตํ•˜๊ณ  ์žˆ๋‹ค. 1. using ์ง€์‹œ์ž(directive): `usingย namespaceย ๋„ค์ž„์ŠคํŽ˜์ด์Šค์ด๋ฆ„;` `` 2. using ์„ ์–ธ(declaration): `usingย ๋„ค์ž„์ŠคํŽ˜์ด์Šค์ด๋ฆ„::์ด๋ฆ„;` `` ### ํฌ์ธํ„ฐ vs ์ฐธ์กฐ(&) ํฌ์ธํ„ฐ๋Š” ํ•˜๋‚˜์˜ ๋ณ€์ˆ˜์ด๋‹ค. ์ฐธ์กฐ๋Š” ๋ณ€์ˆ˜๋ผ๊ณ  ๋ณด๊ธฐ์—๋Š” ๋ถ€์กฑํ•˜๋‹ค. ์žฌ๋ฐ”์ธ๋”ฉ์ด ๋ถˆ๊ฐ€๋Šฅํ•˜๋‹ค. ์ฆ‰, ์ƒˆ๋กœ์šด ๊ฐ’์œผ๋กœ ๋ณ€๊ฒฝํ•  ์ˆ˜ ์—†๋‹ค. ํ•œ๋ฒˆ ์ฐธ์กฐํ•  ๋ณ€์ˆ˜(๋ฉ”๋ชจ๋ฆฌ)๋ฅผ ๊ฒฐ์ •ํ–ˆ์œผ๋ฉด **๊ฐ€๋ฆฌํ‚ค๋Š” ๋ฉ”๋ชจ๋ฆฌ ๊ณต๊ฐ„์„ ๋ณ€๊ฒฝํ•  ์ˆ˜ ์—†๋‹ค๋Š” ๋œป์ด๋‹ค.** `` ### ์‹œ๊ฐ„๋ณต์žก๋„ [์‹œ๊ฐ„๋ณต์žก๋„, ๋ฌธ์ œ ๋ถ„๋ฅ˜](https://www.notion.so/d6ac26bb23c74ebaa333f03bacda6111) ### ๋ฉ”๋ชจ๋ฆฌ #### C์–ธ์–ด ๋™์ ํ• ๋‹น C์–ธ์–ด์—์„œ ๋ฉ”๋ชจ๋ฆฌ ํ• ๋‹น ํ•จ์ˆ˜๋กœ malloc, calloc, realloc์ด ์กด์žฌํ•œ๋‹ค. **malloc๊ณผ calloc์€, void\* ํƒ€์ž…์„ ๋ฆฌํ„ดํ•˜๋ฉฐ** ์ง์ ‘ ์บ์ŠคํŒ…ํ•ด์•ผ ํ•œ๋‹ค. - ex) `char* p = (char*) malloc(sizeof(char)*10);` malloc๊ณผ calloc์˜ ์ฐจ์ด์ ์€ **calloc์€ ์‚ฌ์ด์ฆˆ๋ฅผ ์ž…๋ ฅ**์œผ๋กœ ๋„ฃ์–ด์ฃผ๊ณ  **0์œผ๋กœ ์ดˆ๊ธฐํ™”**ํ•ด์ค€๋‹ค. realloc์€ ์œ„์˜ ๋‘๊ฐ€์ง€ ์œ ํ˜•์œผ๋กœ ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ํ• ๋‹นํ•œ ํ›„ ๋ฉ”๋ชจ๋ฆฌ๊ณต๊ฐ„์„ ๋Š˜๋ฆฌ๊ฑฐ๋‚˜, ์ค„์ด๊ณ  ์‹ถ์„ ๋•Œ ์‚ฌ์šฉํ•œ๋‹ค. `void* realloc(void* p, size_t size)` ์ด๋ ‡๊ฒŒ ์ƒ์„ฑํ•œ ๊ณต๊ฐ„์€ ํ”„๋กœ๊ทธ๋žจ์ด ์ข…๋ฃŒ๋  ๋•Œ, **๋‚ด๊ฐ€ ์ง์ ‘ ํ•ด์ œ์‹œ์ผœ์•ผ ํ•œ๋‹ค.** `free()`๋ฅผ ํ†ตํ•ด ํ•ด์ œํ•œ๋‹ค.(**PC๋ฅผ ๋„๊ธฐ ์ „**๊นŒ์ง€ ํ•ด์ฒดํ•˜์ง€ ์•Š์œผ๋ฉด ์ ์œ ๋œ๋‹ค.) realloc()์˜ ๋Œ€ํ‘œ์  ๋ฌธ์ œ๋Š” ์ •๋ง ํ˜น์‹œ๋‚˜ ๋ฉ”๋ชจ๋ฆฌ ํ• ๋‹น์ด ์‹คํŒจํ•  ๊ฒฝ์šฐ **null์ด ๋ฐ˜ํ™˜๋˜๊ธฐ ๋•Œ๋ฌธ์— ๊ธฐ์กด์˜ ๋ฉ”๋ชจ๋ฆฌ๊ฐ€ ํ• ๋‹น๋˜์–ด ์žˆ๋Š” ํฌ์ธํ„ฐ๋ฅผ ์žƒ์–ด๋ฒ„๋ฆฌ๋Š” ๊ฒƒ์ด๋‹ค.** ๋˜ํ•œ ์—ฌ๋Ÿฌ ํฌ์ธํ„ฐ๊ฐ€ ์ฃผ์†Œ๊ณต๊ฐ„์„ ๊ณต์œ ํ•˜๋Š” ์ƒํ™ฉ์ด๋ผ๋ฉด, realloc ํ•จ์ˆ˜๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด, ๋‹ค๋ฅธ ํฌ์ธํ„ฐ๋“ค์€ ์ด์ƒํ•œ ๊ณณ์„ ๊ฐ€๋ฆฌํ‚ค๊ฒŒ ๋œ๋‹ค. #### C++ ๋™์ ํ• ๋‹น(New) New๋ฅผ ํ†ตํ•ด์„œ ๋™์ ํ• ๋‹น์„ ์ง„ํ–‰ํ•œ๋‹ค. `ํƒ€์ž…*ย ํฌ์ธํ„ฐ์ด๋ฆ„ย =ย newย ํƒ€์ž…;` ๋ฐ˜ํ™˜๋ช…๋ น์–ด๋Š” `deleteย ํฌ์ธํ„ฐ์ด๋ฆ„;` ์•„๋ž˜๋Š” ์žฅ์  ๋ชฉ๋ก์ด๋‹ค. - **ํƒ€์ž… ์•ˆ์ •์„ฑ**(์ž๋™์œผ๋กœ ํƒ€์ž… ๋ณ€ํ™˜) - **์˜ˆ์™ธ ์ฒ˜๋ฆฌ**(์‹คํŒจํ•˜๋ฉด ์˜ˆ์™ธ ์ฒ˜๋ฆฌ, ๋ฐ˜๋ฉด malloc์€ NULL๋งŒ ๋ฐ˜ํ™˜) - ์ž๋™์œผ๋กœ **์‚ฌ์ด์ฆˆ ๊ณ„์‚ฐ**(sizeof ํ•„์š”์—†์Œ) - ๊ฐ์ฒด์˜ **์ƒ์„ฑ์ž๋ฅผ ํ˜ธ์ถœ(์ƒ์„ฑ์‹œ ์ดˆ๊ธฐํ™” ๊ฐ€๋Šฅ)** #### ์Šค๋งˆํŠธ ํฌ์ธํ„ฐ new, delete๋Š” ์•„๋ž˜์˜ ๋ฌธ์ œ๊ฐ€ ์žˆ๋‹ค. ์šฐ๋ฆฌ๊ฐ€ ์ง์ ‘ ๊ด€๋ฆฌํ•ด์ค˜์•ผํ•œ๋‹ค๋Š” ๋ถˆํŽธํ•œ์ ์ด ์žˆ๋‹ค. **๋ฉ”๋ชจ๋ฆฌ ๋ˆ„์ˆ˜**: **`new`**๋กœ ํ• ๋‹นํ•œ ๋ฉ”๋ชจ๋ฆฌ๋Š” ๋ฐ˜๋“œ์‹œ **`delete`**๋กœ ํ•ด์ œํ•ด์•ผ ํ•˜๋ฉฐ ๊ทธ๋ ‡์ง€ ์•Š์œผ๋ฉด ๋ฉ”๋ชจ๋ฆฌ ๋ˆ„์ˆ˜๊ฐ€ ๋ฐœ์ƒํ•œ๋‹ค. ์ด๋Ÿฌํ•œ ์ฃผ์˜์‚ฌํ•ญ๋“ค๋กœ ์ธํ•ด C++11 ์ดํ›„์—๋Š” ์Šค๋งˆํŠธ ํฌ์ธํ„ฐ(**`std::unique_ptr`**, **`std::shared_ptr`** ๋“ฑ)๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ด ๊ถŒ์žฅ๋œ๋‹ค๊ณ  ํ•œ๋‹ค. ์Šค๋งˆํŠธ ํฌ์ธํ„ฐ๋Š” ์ž๋™ ๋ฉ”๋ชจ๋ฆฌ ๊ด€๋ฆฌ ๊ธฐ๋Šฅ์„ ์ œ๊ณตํ•˜๋ฏ€๋กœ ์œ„์™€ ๊ฐ™์€ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•  ์ˆ˜ ์žˆ๋‹ค. ### ๊ตฌ์กฐ์ฒด(struct)์™€ ๊ณต์šฉ์ฒด(union) ๊ตฌ์กฐ์ฒด๋Š” ๋‹ค์–‘ํ•œ ํฌ๊ธฐ์˜ ํƒ€์ž…์„ ๋ฉค๋ฒ„ ๋ณ€์ˆ˜๋กœ ๊ฐ€์งˆ ์ˆ˜ ์žˆ๋Š” ํƒ€์ž…์ž…๋‹ˆ๋‹ค. ๊ตฌ์กฐ์ฒด๋Š” **ํฌ๊ธฐ๊ฐ€ ๊ฐ€์žฅ ํฐ ๋ฉค๋ฒ„ ๋ณ€์ˆ˜๋ฅผ ๊ธฐ์ค€์œผ๋กœ ๋ชจ๋“  ๋ฉค๋ฒ„ ๋ณ€์ˆ˜์˜ ๋ฉ”๋ชจ๋ฆฌ ํฌ๊ธฐ๋ฅผ ๋งž์ถ˜๋‹ค.** ์ด๋•Œ ์ƒ๊ธฐ๋Š” ํŒจ๋”ฉ์„ ๋ฐ”์ดํŠธ ํŒจ๋”ฉ์ด๋ผ๊ณ  ํ•˜๋ฉฐ, ์ด๋•Œ ์ถ”๊ฐ€๋˜๋Š” ๋ฐ”์ดํŠธ๋ฅผ ํŒจ๋”ฉ ๋ฐ”์ดํŠธ(padding byte)๋ผ๊ณ  ํ•ฉ๋‹ˆ๋‹ค. ๋ฉ”๋ชจ๋ฆฌ ํ• ๋‹น ๊ทœ์น™ 1. ๊ฐ€์žฅ ํฐ ๋ฉค๋ฒ„ ๋ณ€์ˆ˜๋ฅผ ๊ธฐ์ค€์œผ๋กœ ๋ฉ”๋ชจ๋ฆฌ ํ• ๋‹นํ•จ 2. ๊ฐ€์žฅ ์ž‘์€ ๋ณ€์ˆ˜๋ถ€ํ„ฐ ์—ฐ์†์ ์œผ๋กœ ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ์ฑ„์›€, ๋งŒ์•ฝ ํ˜„์žฌ ๋‚จ์€ ๋ฉ”๋ชจ๋ฆฌํฌ๊ธฐ๋ณด๋‹ค ํƒ€์ž…์˜ ํฌ๊ธฐ๊ฐ€ ํฌ๋ฉด ์ถ”๊ฐ€์ ์œผ๋กœ ํ• ๋‹นํ•˜๊ณ , ๊ธฐ์กด์˜ ๋‚จ์€ ํฌ๊ธฐ๋ฅผ ํŒจ๋”ฉ์œผ๋กœ ์ฑ„์›Œ๋„ฃ์Œ **๊ณต์šฉ์ฒด** ๊ณต์šฉ์ฒด(union)๋Š” union ํ‚ค์›Œ๋“œ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์„ ์–ธํ•˜๋ฉฐ, ๋Œ€๋‹ค์ˆ˜๋Š” ๊ตฌ์กฐ์ฒด์™€ ๊ฐ™์Šต๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ **๋ชจ๋“  ๋ฉค๋ฒ„ ๋ณ€์ˆ˜๊ฐ€ ํ•˜๋‚˜์˜ ๋ฉ”๋ชจ๋ฆฌ ๊ณต๊ฐ„์„ ๊ณต์œ **ํ•œ๋‹ค๋Š” ์ ๋งŒ์ด ๋‹ค๋ฅด๋‹ค. **ํฌ๊ธฐ๊ฐ€ ๊ฐ€์žฅ ํฐ ๋ฉค๋ฒ„ ๋ณ€์ˆ˜์˜ ํฌ๊ธฐ๋กœ ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ํ• ๋‹น**๋ฐ›์Šต๋‹ˆ๋‹ค. ๊ทธ๋ ‡๊ธฐ์— ๋ฉค๋ฒ„ ๋ณ€์ˆ˜ ํ•˜๋‚˜๋งŒ์„ ์ˆ˜์ •ํ•ด๋„ ๋‹ค๋ฅธ ๊ฐ’๋“ค ๋˜ํ•œ ๋ณ€๊ฒฝ๋  ์ˆ˜ ์žˆ๋‹ค. `` ์œ„ ์ฝ”๋“œ์—์„œ **`a`**์˜ ๊ฐ’์€ **`0x78`**์ด ๋  ๊ฒƒ์ด๋ฉฐ, **`b`**์˜ ๊ฐ’์€ **`0x5678`**์ด ๋  ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๋ฐ˜๋Œ€๋กœ ๋น… ์—”๋””์•ˆ ์‹œ์Šคํ…œ์—์„œ๋Š” ๊ฒฐ๊ณผ๊ฐ€ ๋‹ค๋ฅผ ์ˆ˜ ์žˆ๋‹ค. ### ๋ฐ์ดํ„ฐ ์ €์žฅ๋ฐฉ์‹ ex) `0x12345678` ๋‘๊ฐœ๋กœ ๋์€ ๊ฒƒ์€ ํ•˜๋‚˜์˜ ์ฃผ์†Œ๋Š” ์ฃผ๋กœ ๋ฐ”์ดํŠธ ๋‹จ์œ„์ด๊ธฐ ๋•Œ๋ฌธ - **๋ฆฌํ‹€์ธ๋””์•ˆ**: ๋‚ฎ์€ ์ฃผ์†Œ์—, ํ•˜์œ„ ๋น„ํŠธ๊ฐ€ ๋„ฃ์–ด์ง(์ฆ‰ ์ฃผ์†Œ ์ˆœ์œผ๋กœ ํ‘œํ˜„ํ•˜๋ฉด 78,56,34,12) - ๋น…์ธ๋””์•ˆ: ๋‚ฎ์€ ์ฃผ์†Œ์—, ์ƒ์œ„ ๋น„ํŠธ๊ฐ€ ๋„ฃ์–ด์ง(12,34,56,78) ๋ฆฌํ‹€ ์—”๋””์•ˆ ๋ฐฉ์‹์€ ๋‚ฎ์€ ์ฃผ์†Œ์— ๋ฐ์ดํ„ฐ์˜ ๋‚ฎ์€ ๋ฐ”์ดํŠธ(LSB : Least Significant Byte)๋ฅผ ์ €์žฅํ•˜๋Š” ๋ฐฉ์‹์ด๋‹ค. ์ด ๋ฐฉ์‹์€ ํ‰์†Œ ์‚ฌ๋žŒ์ด ์ˆซ์ž๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ์„ ํ˜• ๋ฐฉ์‹๊ณผ ๋ฐ˜๋Œ€๋กœ ๊ฑฐ๊พธ๋กœ ์ฝ์–ด์•ผ ํ•œ๋‹ค. [![Untitled.png](https://cdn.jsdelivr.net/gh/han-0315/han-0315.github.io@main/assets/img/post/Cpp%EC%A0%95%EB%A6%AC/Untitled.png)](https://cdn.jsdelivr.net/gh/han-0315/han-0315.github.io@main/assets/img/post/Cpp%EC%A0%95%EB%A6%AC/Untitled.png) \[์ถœ์ฒ˜: ์œ„ํ‚คํ”ผ๋””์•„, https://ko.wikipedia.org/wiki/%EC%97%94%EB%94%94%EC%96%B8\] ### ์ƒ์† #### ์ ‘๊ทผ์ œ์–ด ํด๋ž˜์Šค์•ˆ์— ์ ‘๊ทผ ์ œ์–ด ๋ฐฉ์‹์€ public, private, protected 3๊ฐ€์ง€๊ฐ€ ์žˆ๋‹ค. - `public`: ์ ‘์ฒด ์ ‘๊ทผ ๊ฐ€๋Šฅ - `private`: **ํด๋ž˜์Šค ๋‚ด๋ถ€์—์„œ๋งŒ ๊ฐ€๋Šฅ, ์ ‘๊ทผ์ œ์–ด ํ‚ค์›Œ๋“œ๊ฐ€ ์—†์œผ๋ฉด private๊ฐ€ ๊ธฐ๋ณธ๊ฐ’** - `protected`: **์ƒ์†๋ฐ›์€ โ€œํŒŒ์ƒโ€ํด๋ž˜์Šค, ์ž์‹ ์˜ ํด๋ž˜์Šค ๋‚ด๋ถ€์—์„œ๋งŒ ๊ฐ€๋Šฅ** - `friend` - friend ํด๋ž˜์Šค๋Š” friend๋กœ ์„ ์–ธ๋œ ๋‹ค๋ฅธ ํด๋ž˜์Šค์˜ private ๋ฐ protected ๋ฉค๋ฒ„์— ์ ‘๊ทผํ•  ์ˆ˜ ์žˆ๋‹ค. - friend ํ•จ์ˆ˜๋Š” private ๋ฐ protected ๋ฉค๋ฒ„์— ์ ‘๊ทผํ•  ์ˆ˜ ์žˆ๋Š” ๊ถŒํ•œ์„ ๋ถ€์—ฌํ•  ์ˆ˜ ์žˆ๋‹ค. #### ์˜ค๋ฒ„๋กœ๋”ฉ๊ณผ ์˜ค๋ฒ„๋ผ์ด๋”ฉ ์˜ค๋ฒ„๋ผ์ด๋”ฉ์€ ๋™์ ์œผ๋กœ ์‹ค์ œ ๊ทธ ๊ฐ์ฒด์˜ ํƒ€์ž…์— ๋งž๋Š” ํ•จ์ˆ˜๋ฅผ ์‹คํ–‰ํ•˜๋Š” ๊ฒƒ์ด๊ณ , ์˜ค๋ฒ„๋กœ๋”ฉ์€ ์ •์ ์œผ๋กœ ๋งค๊ฐœ๋ณ€์ˆ˜์— ๋งž๋Š” ํ•จ์ˆ˜๋ฅผ ์„ ํƒํ•˜์—ฌ ์‹คํ–‰ํ•˜๋Š” ๊ฒƒ์ด๋‹ค. #### virtual์ด๋ž€? **`virtual`**์€ C++์˜ ๋‹คํ˜•์„ฑ์„ ๊ตฌํ˜„ํ•˜๊ธฐ ์œ„ํ•œ ํ‚ค์›Œ๋“œ๋กœ **abstract method**์ด๋‹ค. ์ด๋ฅผ ํ†ตํ•ด ํŒŒ์ƒํด๋ž˜์Šค์—์„œ ์˜ค๋ฒ„๋ผ์ด๋”ฉ๋  ์ˆ˜ ์žˆ๋‹ค. virtual ํ•จ์ˆ˜๋ฅผ ํ˜ธ์ถœํ•˜๋ฉด, ์ปดํŒŒ์ผ๋Ÿฌ๋Š” ๊ฐ์ฒด์˜ ํƒ€์ž…์ด ์•„๋‹Œ ์ฐธ์กฐ๋ฅผ ํ†ตํ•ด ๊ฐ€๋ฆฌํ‚ค๋Š” **์‹ค์ œ ๊ฐ์ฒด์˜ ํƒ€์ž…์„ ํ™•์ธ**ํ•˜์—ฌ ์ ์ ˆํ•œ ํ•จ์ˆ˜๋ฅผ ํ˜ธ์ถœํ•œ๋‹ค. ๋‚ด๋ถ€์ ์œผ๋กœ๋Š” **๊ฐ€์ƒ ํ•จ์ˆ˜ ํ…Œ์ด๋ธ”**์„ ์‚ฌ์šฉํ•˜์—ฌ, ํ˜„์žฌ์˜ ํƒ€์ž…์ด ์•„๋‹Œ ์‹ค์ฒด๋ฅผ ๋งตํ•‘ํ•œ๋‹ค. ์•„๋ž˜์˜ ์ฝ”๋“œ์—์„œ **(1)**์˜ ๊ฒฝ์šฐ์—์„œ Base ํƒ€์ž…์˜ ํ•จ์ˆ˜๊ฐ€ ์•„๋‹Œ ์‹ค์ฒด์˜ ํ•จ์ˆ˜ Derived show, display๋ฅผ ๋งตํ•‘ํ•œ๋‹ค. `` #### ์—…์บ์ŠคํŒ…๊ณผ ๋‹ค์šด์บ์ŠคํŒ… ์—…์บ์ŠคํŒ… = ํ•˜์œ„ ํƒ€์ž…์—์„œ ์ƒ์œ„ ํƒ€์ž…์œผ๋กœ ์ฐธ์กฐํ•˜๋Š” ๊ฒƒ์ด๋‹ค. ๋‹ค์šด ์บ์ŠคํŒ…์€ ๋ฐ˜๋Œ€๋กœ ์ƒ์œ„์—์„œ ํ•˜์œ„๋กœ ์ฐธ์กฐํ•œ๋‹ค. ์—…์บ์ŠคํŒ…์€ ์•ˆ์ „ํ•˜๋‚˜, ๋‹ค์šด์บ์ŠคํŒ…์€ ๋ถˆ์™„์ „ํ•˜๋‹ค. ํƒˆ ๊ฒƒ์ด๋ผ๋Š” ์ƒ์œ„ํƒ€์ž…์—์„œ ์ž๋™์ฐจ๋ผ๋Š” ํ•˜์œ„ํƒ€์ž…์œผ๋กœ ์บ์ŠคํŒ…ํ•˜๋ฉด, ๋งŒ์•ฝ ์‹ค์ฒด๊ฐ€ ๋น„ํ–‰๊ธฐ๋ผ๋ฉด ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ•œ๋‹ค. `` ### String C++์˜ **`std::string`** ํด๋ž˜์Šค์™€ C ์Šคํƒ€์ผ ์ŠคํŠธ๋ง ๊ฐ„์˜ ์ฃผ์š” ์ฐจ์ด์ ์€ ์•„๋ž˜์™€ ๊ฐ™๋‹ค. - **C ์Šคํƒ€์ผ ์ŠคํŠธ๋ง**: ๋ฌธ์ž๋“ค์˜ ๋ฐฐ์—ด๋กœ, ๋„(**`'\0'`**) ๋ฌธ์ž๋กœ ์ข…๋ฃŒ๋œ๋‹ค. ์˜ˆ: **`char myStr[] = "Hello";`** ๋งˆ์ง€๋ง‰ ๋ฌธ์ž์—ด์— ๋„ ๋ฌธ์ž๊ฐ€ ์ž…๋ ฅ๋œ๋‹ค. - **std::string**: C++ ํ‘œ์ค€ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์˜ ํด๋ž˜์Šค๋กœ์„œ, ๋ฌธ์ž๋“ค์˜ ๋™์  ๋ฐฐ์—ด๊ณผ ๊ด€๋ จ๋œ ๋ฉ”์„œ๋“œ๋“ค๋กœ ๊ตฌ์„ฑ๋œ๋‹ค. - ํฌ๊ธฐ์กฐ์ ˆ: C์Šคํƒ€์ผ์€ ๋ถˆ๊ฐ€๋Šฅํ•˜์ง€๋งŒ, C++ ์Šคํƒ€์ผ์€ ๊ฐ€๋Šฅํ•˜๋‹ค. ๋‚ด๋ถ€์ ์œผ๋กœ ๋ฉ”๋ชจ๋ฆฌ ๊ด€๋ฆฌ๋ฅผ ํ•œ๋‹ค. `` ### ์ธ๋ผ์ธ ํ•จ์ˆ˜ ์œ„์™€ ๊ฐ™์ด **C++์—์„œ ํ•จ์ˆ˜์˜ ํ˜ธ์ถœ**์€ ๊ฝค ๋ณต์žกํ•œ ๊ณผ์ •์„ ๊ฑฐ์น˜๋ฏ€๋กœ, ์•ฝ๊ฐ„์˜ **์‹œ๊ฐ„์ด ๊ฑธ๋ฆฌ๊ฒŒ** ๋ฉ๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ ํ•จ์ˆ˜์˜ ์‹คํ–‰ ์‹œ๊ฐ„์ด ๋งค์šฐ ์งง๋‹ค๋ฉด, ํ•จ์ˆ˜ ํ˜ธ์ถœ์— ๊ฑธ๋ฆฌ๋Š” ์‹œ๊ฐ„๋„ ๋ถ€๋‹ด์ด ๋  ์ˆ˜ ์žˆ๋‹ค. ์ธ๋ผ์ธ **ํ•จ์ˆ˜๋Š” ํ˜ธ์ถœ๋  ๋•Œ ์ผ๋ฐ˜์ ์ธ ํ•จ์ˆ˜์˜ ํ˜ธ์ถœ ๊ณผ์ •์„ ๊ฑฐ์น˜์ง€ ์•Š๊ณ **, ํ•จ์ˆ˜์˜ ๋ชจ๋“  ์ฝ”๋“œ๋ฅผ **ํ˜ธ์ถœ๋œ ์ž๋ฆฌ์— ๋ฐ”๋กœ ์‚ฝ์ž…ํ•˜๋Š” ๋ฐฉ์‹์˜ ํ•จ์ˆ˜์ด๋‹ค.** ์ด ๋ฐฉ์‹์€ ํ•จ์ˆ˜๋ฅผ ํ˜ธ์ถœํ•˜๋Š” ๋ฐ **๊ฑธ๋ฆฌ๋Š” ์‹œ๊ฐ„์€ ์ ˆ์•ฝ๋˜๋‚˜,** ์žฌ๊ท€์™€ ๊ฐ™์€ ํ•จ์ˆ˜์˜ ์—ฌ๋Ÿฌ ์ด์ ์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์—†๋‹ค. ์ธ๋ผ์ธ ํ•จ์ˆ˜ ์‚ฌ์šฉ์‹œ ๋‹จ์ ์€ ์ปดํŒŒ์ผ ์‹œ๊ฐ„(์ธ๋ผ์ธ ํ•จ์ˆ˜ ์น˜ํ™˜) ์ฆ๊ฐ€, ๋””๋ฒ„๊น… ์‹œ๊ฐ„ ์ฆ๊ฐ€, ์žฌ๊ท€ ๋ถˆ๊ฐ€๋Šฅ์ด ์žˆ๋‹ค. ### ํ•จ์ˆ˜ ํฌ์ธํ„ฐ ํ•จ์ˆ˜ ํฌ์ธํ„ฐ๋Š” ๋ง ๊ทธ๋Œ€๋กœ ํ•จ์ˆ˜๋ฅผ ๊ฐ€๋ฆฌํ‚ค๋Š” ํฌ์ธํ„ฐ๋‹ค. ํ”„๋กœ๊ทธ๋žจ์—์„œ ์ •์˜๋œ ํ•จ์ˆ˜๋Š” ํ”„๋กœ๊ทธ๋žจ์ด ์‹คํ–‰๋  ๋•Œ ๋ชจ๋‘ ๋ฉ”์ธ ๋ฉ”๋ชจ๋ฆฌ์— ์˜ฌ๋ผ๊ฐ€๋ฉฐ ํ•จ์ˆ˜ ํฌ์ธํ„ฐ๋Š” ํ•จ์ˆ˜์˜ ์ฒซ ์ฃผ์†Œ๋ฅผ ๊ฐ€๋ฆฌํ‚จ๋‹ค. `` ### STL [STL ์ปจํ…Œ์ด๋„ˆ ์ •๋ฆฌ](https://www.notion.so/e5467d68109844ed98daddee9c4b577a) ### ๊ทธ์™ธ `volatile` ํ‚ค์›Œ๋“œ๋ฅผ ํ†ตํ•ด ์ปดํŒŒ์ผ๋Ÿฌ์—๊ฒŒ ์ตœ์ ํ™”๋ฅผ ์ œํ•œํ•˜๋Š” ์šฉ๋„๋กœ ์‚ฌ์šฉํ•œ๋‹ค. voliatile๋กœ ์„ ์–ธํ•œ ๋ณ€์ˆ˜๋Š” ์ปดํŒŒ์ผ๋Ÿฌ๊ฐ€ ํ•ด๋‹น ๋ณ€์ˆ˜๋ฅผ ์ตœ์ ํ™”์—์„œ ์ œ์™ธํ•˜์—ฌ ํ•ญ์ƒ ๋ฉ”๋ชจ๋ฆฌ์— ์ ‘๊ทผํ•˜๋„๋ก ํ•˜๋Š” ํ‚ค์›Œ๋“œ์ž…๋‹ˆ๋‹ค. ์•„๋ž˜์™€ ๊ฐ™์€ ๊ฒฝ์šฐ ์ปดํŒŒ์ผ๋Ÿฌ๋Š” ๋‘๋ฒˆ์งธ ์ฝ”๋“œ๋กœ ํ•ด์„ํ•˜์—ฌ ์ตœ์ ํ™”ํ•œ๋‹ค. ์ด๋ฅผ ๋ฐฉ์ง€ํ•˜๊ธฐ ์œ„ํ•ด `volatile` ํ‚ค์›Œ๋“œ๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค. **\[๊ธฐ์กด ์ฝ”๋“œ\]** `` **\[์ปดํŒŒ์ผ๋Ÿฌ๊ฐ€ ์ตœ์ ํ™”ํ•œ ์ฝ”๋“œ\]** `` ### ์ดˆ๊ธฐํ™” ์ด๊ฑฐ๋Š” ๋‹ค๋ฅธ ๋ธ”๋กœ๊ทธ๋ฅผ ์ฐธ๊ณ ํ•˜๋‹ค๊ฐ€ ๋ฐœ๊ฒฌํ•œ ๊ฒƒ์ด๋‹ค. ๊ฒŒ์ž„ ํšŒ์‚ฌ ๋ฉด์ ‘์—์„œ ์•„๋ž˜์™€ ๊ฐ™์ด ์ดˆ๊ธฐํ™” ๋ฐฉ๋ฒ•์„ ๋ฌผ์–ด๋ดค๋‹ค๊ณ  ํ•œ๋‹ค. ๋ชฐ๋ž๋˜ ์‚ฌ์‹ค์ธ๋ฐ ์•„๋ž˜์™€ ์ดˆ๊ธฐํ™”๋ฅผ ์ง„ํ–‰ํ•˜๋ฉด ์—ฐ์‚ฐ์ด ํ•˜๋‚˜๋กœ ์ค„์–ด๋“ ๋‹ค๊ณ  ํ•œ๋‹ค. - ์ƒ์„ฑํ›„ ์ดˆ๊ธฐํ™” `` - ์ƒ์„ฑ์‹œ ์ดˆ๊ธฐํ™” `` ์ƒ์„ฑํ›„ ์ดˆ๊ธฐํ™”๊ฐ€ ํ•œ๋ฒˆ์— ์ง„ํ–‰ํ•˜๊ณ , ์ƒ์„ฑ์‹œ ์ดˆ๊ธฐํ™”๋Š” ํ•œ๋ฒˆ์˜ ์—ฐ์‚ฐ๊ณผ์ •์ด ๋” ํ•„์š”ํ•˜๋‹ˆ ๋น„์šฉ์ด 2๋ฐฐ๋ผ๊ณ  ํ•œ๋‹ค. ### ์ฐธ๊ณ ์ž๋ฃŒ <https://tcpschool.com/c/c_intro_programming> <https://velog.io/@mardi2020/C-%EB%A9%B4%EC%A0%91-%EC%A7%88%EB%AC%B8-%EC%A0%95%EB%A6%AC> <https://se-jung-h.tistory.com/entry/C-C-%EA%B8%B0%EC%88%A0-%EB%A9%B4%EC%A0%91-%EC%A7%88%EB%AC%B8> <https://www.hanbit.co.kr/channel/category/category_view.html?cms_code=CMS1726560277&cate_cd=> [ํ”„๋กœ๊ทธ๋ž˜๋ฐ์–ธ์–ด](https://www.handongbee.com/categories/%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%98%EB%B0%8D%EC%96%B8%EC%96%B4/), [Cpp](https://www.handongbee.com/categories/cpp/) [Cpp](https://www.handongbee.com/tags/cpp/) [C++](https://www.handongbee.com/tags/c/) This post is licensed under [CC BY 4.0](https://creativecommons.org/licenses/by/4.0/) by the author. Share ## Trending Tags [Network](https://www.handongbee.com/tags/network/) [CloudNet](https://www.handongbee.com/tags/cloudnet/) [Kubernetes](https://www.handongbee.com/tags/kubernetes/) [KANS](https://www.handongbee.com/tags/kans/) [KANS\#1](https://www.handongbee.com/tags/kans-1/) [Cilium](https://www.handongbee.com/tags/cilium/) [CNI](https://www.handongbee.com/tags/cni/) [KANS\#3](https://www.handongbee.com/tags/kans-3/) [KANS\#8](https://www.handongbee.com/tags/kans-8/) [KANS\#2](https://www.handongbee.com/tags/kans-2/) ## Contents [์ด๊ฑฐํ•˜๋‚˜๋กœ GitHub Blog ๋งŒ๋“ค๊ธฐ](https://www.handongbee.com/posts/GitHub-Blog-%EC%8B%9C%EC%9E%91%ED%95%98%EA%B8%B0/) [OS ์Šค์ผ€์ค„๋ง](https://www.handongbee.com/posts/%EC%8A%A4%EC%BC%80%EC%A4%84%EB%A7%81/) ยฉ 2025 [Dongbee](https://www.handongbee.com/posts/Cpp%EC%A0%95%EB%A6%AC/). Some rights reserved. Using the [Chirpy](https://github.com/cotes2020/jekyll-theme-chirpy) theme for [Jekyll](https://jekyllrb.com/). ## Trending Tags [Network](https://www.handongbee.com/tags/network/) [CloudNet](https://www.handongbee.com/tags/cloudnet/) [Kubernetes](https://www.handongbee.com/tags/kubernetes/) [KANS](https://www.handongbee.com/tags/kans/) [KANS\#1](https://www.handongbee.com/tags/kans-1/) [Cilium](https://www.handongbee.com/tags/cilium/) [CNI](https://www.handongbee.com/tags/cni/) [KANS\#3](https://www.handongbee.com/tags/kans-3/) [KANS\#8](https://www.handongbee.com/tags/kans-8/) [KANS\#2](https://www.handongbee.com/tags/kans-2/) A new version of content is available. Update
Readable Markdownnull
Shard156 (laksa)
Root Hash9508965561947048356
Unparsed URLcom,handongbee!www,/posts/Cpp%EC%A0%95%EB%A6%AC/ s443