SlideShare ist ein Scribd-Unternehmen logo
1 von 68
Downloaden Sie, um offline zu lesen
2013 C++ STUDY
FOR STUDENTS #1
์˜ฅ์ฐฌํ˜ธ
์ง„ํ–‰์ž ์†Œ๊ฐœ
โ€ข ์˜ฅ์ฐฌํ˜ธ
โ€ข

ํ˜„) KAIST ์ „์‚ฐํ•™๊ณผ ์„์‚ฌ๊ณผ์ •

โ€ข

ํ˜„) ์—์ด์ฝ˜์ถœํŒ์‚ฌ ์—ญ์ž

โ€ข

ํ˜„) ์ธ๋”” ๊ฒŒ์ž„ ๊ฐœ๋ฐœํŒ€ Game Drunker ํŒ€์žฅ

โ€ข

์ „) ๊ฒฝ๋ถ๋Œ€ํ•™๊ต ์ปดํ“จํ„ฐํ•™๋ถ€ ์กธ์—…

โ€ข

์ „) ์Šค๋งˆํŠธ๋น„์•„ ์ธํ„ด โ€“ ์•ˆ๋“œ๋กœ์ด๋“œ ํ”„๋กœ๊ทธ๋ž˜๋จธ

โ€ข

์ „) ๊ฒฝ๋ถ๋Œ€ํ•™๊ต ์ปดํ“จํ„ฐํ•™๋ถ€ ์‹œ์Šคํ…œ ๊ด€๋ฆฌ์œ„์›์žฅ

โ€ข

์ „) ์ˆœ์‹ฌ๊ณ ๋“ฑํ•™๊ต ์กธ์—…
์ฐธ๊ณ ํ•œ ์ฑ…๋“ค
์ด๋ฒˆ ์Šคํ„ฐ๋”” ์ฃผ์ œ

โ€ข C++ ์–ธ์–ด์˜ ๋ฌธ๋ฒ•๊ณผ ์ค‘์š” ์š”์†Œ ๋‘˜๋Ÿฌ๋ณด๊ธฐ
C++๋„ ์‹œ์ž‘์€ โ€œHELLO, WORLDโ€

โ€ข // helloworld.cpp
#include <iostream>
int main()
{
std::cout << โ€œHello, World!โ€ << std::endl;
return 0;
}
์ฃผ์„

โ€ข ์ฃผ์„์„ ํ‘œ์‹œํ•˜๋Š” ๋‘ ๊ฐ€์ง€ ๋ฐฉ๋ฒ•
โ€ข

// helloworld.cpp : ์Šฌ๋ž˜์‹œ ๋‘ ๊ฐœ๋ฅผ ๊ฒน์ณ ์จ์„œ ๊ทธ ๋’ค์— ๋”ฐ๋ผ์˜ค๋Š” ๋ฌธ์ž๋“ค์€ ๊ทธ ์ข…๋ฅ˜์™€ ๊ด€๊ณ„์—†์ด (์ค„ ๋ฐ”๊ฟˆ ๋ฌธ์ž๋ฅผ
์ œ์™ธํ•˜๊ณ ) ๋ชจ๋‘ ์ฃผ์„์œผ๋กœ ์ฒ˜๋ฆฌํ•˜๋Š” ๋ฐฉ๋ฒ•.

โ€ข

C ์–ธ์–ด์˜ ์ฃผ์„ : /*๋กœ ์‹œ์ž‘ํ•˜๊ณ  */๋กœ ๋๋‚˜๋Š” ๊ตฌ๊ฐ„์„ ์ค„ ๋ฐ”๊ฟˆ์„ ํฌํ•จํ•ด์„œ ๋ชจ๋‘ ์ฃผ์„ ์ฒ˜๋ฆฌ.
โ€ข

/* ์ปดํŒŒ์ผ๋Ÿฌ์— ์˜ํ•ด ๋ฌด์‹œ๋˜๋Š”
* ์—ฌ๋Ÿฌ ์ค„์— ๊ฑธ์นœ
* C ์Šคํƒ€์ผ ์ฃผ์„
*/
์ „์ฒ˜๋ฆฌ ์ง€์‹œ์ž
โ€ข C++ ํ”„๋กœ๊ทธ๋žจ์€ ์„ธ ๋‹จ๊ณ„๋ฅผ ๊ฑฐ์ณ์„œ ๋นŒ๋“œ(Build)๋œ๋‹ค.
โ€ข

์ „์ฒ˜๋ฆฌ(Preprocess) ์ž‘์—… : ์ฝ”๋“œ ๋‚ด์—์„œ ์ง€์‹œ๋œ ๋ฉ”ํƒ€ ์ •๋ณด๋ฅผ ์ธ์‹ํ•˜์—ฌ ์ž๋™์œผ๋กœ ์ฝ”๋“œ๋ฅผ ์ˆ˜์ •.

โ€ข

์ปดํŒŒ์ผ(Compile) ์ž‘์—… : ์†Œ์Šค ์ฝ”๋“œ๋ฅผ ๊ธฐ๊ณ„์–ด๋กœ ๋ฒˆ์—ญ.

โ€ข

๋งํฌ(Link) ์ž‘์—… : ๊ธฐ๊ณ„์–ด๋กœ ๋œ ์—ฌ๋Ÿฌ ์˜ค๋ธŒ์ ํŠธ ํŒŒ์ผ์„ ๋ฌถ์–ด์„œ ํ•˜๋‚˜์˜ ์‹คํ–‰ ํŒŒ์ผ๋กœ ๋งŒ๋“ฆ.

โ€ข ์ „์ฒ˜๋ฆฌ ์ง€์‹œ์ž๋Š” ์ „์ฒ˜๋ฆฌ ๋‹จ๊ณ„์—์„œ ์‚ฌ์šฉ๋˜๋Š” ๊ฒƒ. # ๋ฌธ์ž๋กœ ์‹œ์ž‘.
โ€ข

#include <iostream> ๊ตฌ๋ฌธ์€ ์ „์ฒ˜๋ฆฌ ์ง€์‹œ์ž #include๋ฅผ ํ†ตํ•ด <iostream> ํ—ค๋” ํŒŒ์ผ์˜ ์ฝ”๋“œ๋ฅด ๋ชจ๋‘ ๊ฐ€์ ธ์™€
ํ˜„์žฌ ์†Œ์Šค์— ์‚ฝ์ž…ํ•˜๋„๋ก ์ง€์‹œ.

โ€ข

ํ—ค๋” ํŒŒ์ผ์€ ๋ณดํ†ต ๋‹ค๋ฅธ ํŒŒ์ผ์— ๊ตฌํ˜„(Define)๋œ ํ•จ์ˆ˜๋“ค์˜ ํ•จ์ˆ˜ ์„ ์–ธ(Declare)๋ฌธ์„ ๋‹ด๊ณ  ์žˆ์–ด์„œ ๊ทธ ํ•จ์ˆ˜๋“ค์„ ํ˜„์žฌ
์†Œ์Šค์—์„œ ์ฐธ์กฐํ•˜์—ฌ ํ˜ธ์ถœํ•  ์ˆ˜ ์žˆ๋„๋ก ์ปดํŒŒ์ผ๋Ÿฌ์— ์ •๋ณด๋ฅผ ์•Œ๋ ค์ฃผ๋Š” ์šฉ๋„๋กœ ํ™œ์šฉ.
์ „์ฒ˜๋ฆฌ ์ง€์‹œ์ž

โ€ข ์ž์ฃผ ์‚ฌ์šฉํ•˜๋Š” ์ „์ฒ˜๋ฆฌ ์ง€์‹œ์ž
โ€ข

#include [ํŒŒ์ผ๋ช…] : ์ง€์ •๋œ ํŒŒ์ผ์˜ ๋‚ด์šฉ์„ ํ˜„์žฌ ์†Œ์Šค ํŒŒ์ผ์˜ ํ•ด๋‹น ์ง€์‹œ์ž๊ฐ€ ์œ„์น˜ํ•œ ๊ณณ์— ์‚ฝ์ž….

โ€ข

#define [key] [value] : ์ง€์‹œ์ž ์ดํ›„์— ๋’ค๋”ฐ๋ฅด๋Š” ๋ชจ๋“  key ํ‚ค์›Œ๋“œ๋ฅผ value๋กœ ์น˜ํ™˜.

โ€ข

#ifdef [key], #ifndef [key], #endif : ํŠน์ • ํ‚ค์›Œ๋“œ๊ฐ€ #define ๋ฌธ์ด๋‚˜ ์ปดํŒŒ์ผ๋Ÿฌ ์˜ต์…˜์œผ๋กœ ์ •์˜๋˜์–ด ์žˆ๋Š”์ง€
์—ฌ๋ถ€์— ๋”ฐ๋ผ ํ•ด๋‹น ์กฐ๊ฑด ๋ธ”๋ก์˜ ์ฝ”๋“œ๋ฅผ ํ™œ์„ฑํ™” / ๋น„ํ™œ์„ฑํ™”์‹œํ‚ด.

โ€ข

#pragma [xyz] : [xyz] ๋ถ€๋ถ„์€ ์ปดํŒŒ์ผ๋Ÿฌ๋งˆ๋‹ค ๋‹ค๋ฅธ๋ฐ, ์–ธ์–ด ์ฐจ์›์—์„œ ํ‘œ์ค€ํ™”๋˜์ง€ ์•Š๊ณ  ํŠน์ • ์ข…๋ฅ˜์˜
์ปดํŒŒ์ผ๋Ÿฌ์—์„œ๋งŒ ์ง€์›๋˜๋Š” ์ „์ฒ˜๋ฆฌ ๊ธฐ๋Šฅ์„ ์ด์šฉํ•  ์ˆ˜ ์žˆ์Œ.
MAIN() ํ•จ์ˆ˜

โ€ข main() ํ•จ์ˆ˜๋Š” ํ”„๋กœ๊ทธ๋žจ์„ ์‹คํ–‰ํ•  ๋•Œ ๊ฐ€์žฅ ๋จผ์ € ํ˜ธ์ถœ๋˜๋Š” ์‹œ์ž‘์ .
โ€ข

int ํƒ€์ž… ๋ฆฌํ„ด๊ฐ’์€ ํ”„๋กœ๊ทธ๋žจ์˜ ์ƒํƒœ๋ฅผ ์•Œ๋ ค์ฃผ๋Š” ๋ชฉ์ ์œผ๋กœ ์‚ฌ์šฉ๋จ.

โ€ข main() ํ•จ์ˆ˜๋Š” ํŒŒ๋ผ๋ฏธํ„ฐ ์—†์ด ํ˜ธ์ถœ๋  ์ˆ˜๋„ ์žˆ๊ณ  ๋‹ค์Œ๊ณผ ๊ฐ™์ด ๋‘ ๊ฐœ์˜ ํŒŒ๋ผ๋ฏธํ„ฐ๋ฅผ ๋ฐ›์„ ์ˆ˜๋„ ์žˆ์Œ.
โ€ข

int main(int argc, char* argv[])
โ€ข

argc๋Š” ํ”„๋กœ๊ทธ๋žจ์„ ์‹คํ–‰ํ•  ๋•Œ ๋ช…๋ น์ค„์—์„œ ๋„˜๊ฒจ์ง„ ํŒŒ๋ผ๋ฏธํ„ฐ์˜ ๊ฐœ์ˆ˜.

โ€ข

argv๋Š” ๊ฐ ํŒŒ๋ผ๋ฏธํ„ฐ์˜ ๋ฌธ์ž์—ด ๊ฐ’์ด ๋“ค์–ด ์žˆ์Œ.

โ€ข

ํ”„๋กœ๊ทธ๋žจ์˜ ์ด๋ฆ„๋„ ํŒŒ๋ผ๋ฏธํ„ฐ์— ํฌํ•จ๋˜์–ด ์ œ์ผ ์ฒซ ๋ฒˆ์งธ ํŒŒ๋ผ๋ฏธํ„ฐ๋กœ ์ทจ๊ธ‰.
I/O ์ŠคํŠธ๋ฆผ
โ€ข ์ŠคํŠธ๋ฆผ ์ถœ๋ ฅ ๊ธฐ๋Šฅ : std::cout
โ€ข

์ถœ๋ ฅํ•  ๋ฐ์ดํ„ฐ๋ฅผ ์ปจ๋ฒ ์ด์–ด ๋ฒจํŠธ์— ๋ฐ€์–ด ๋„ฃ๋Š”๋‹ค๊ณ  ์ƒ๊ฐ.

โ€ข

<< ์—ฐ์‚ฐ์ž๋Š” ๋ฐ์ดํ„ฐ๋ฅผ ์ปจ๋ฒ ์ด์–ด ๋ฒจํŠธ์— ๋ฐ€์–ด ๋„ฃ๋Š” ์—ญํ• .

โ€ข

๋‹ค์–‘ํ•œ ํƒ€์ž…์˜ ๋ฐ์ดํ„ฐ๋ฅผ << ์—ฐ์‚ฐ์ž๋กœ ๋ฐ€์–ด ๋„ฃ์„ ์ˆ˜ ์žˆ์Œ.
โ€ข

std::cout << โ€œThere are โ€œ << 219 << โ€œways I love you.โ€ << std::endl;

โ€ข

std::endl์€ ์ถœ๋ ฅํ•œ ๋ฉ”์‹œ์ง€์˜ ํ•œ ์ค„์ด ๋๋‚ฌ์Œ์„ ์•Œ๋ ค์คŒ.

โ€ข

์ค„ ๋ฐ”๊ฟˆ์„ ํ•˜๊ธฐ ์œ„ํ•ด n ๋ฌธ์ž(์ค„ ๋ฐ”๊ฟˆ์„ ์˜๋ฏธํ•˜๋Š” ํŠน์ˆ˜ ๋ฌธ์ž(Escape Character))๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜๋„ ์žˆ์Œ.
โ€ข

n : ์ค„ ๋ฐ”๊ฟˆ, r : ์บ๋ฆฌ์ง€ ๋ฆฌํ„ด(์ถœ๋ ฅ ์ปค์„œ๋ฅผ ์ฒ˜์Œ์œผ๋กœ ์˜ฎ๊น€), t : ํƒญ ๋ฌธ์ž,  : ์—ญ์Šฌ๋ž˜์‹œ ๋ฌธ์ž, โ€ : ๋”ฐ์˜ดํ‘œ
I/O ์ŠคํŠธ๋ฆผ

โ€ข ์ŠคํŠธ๋ฆผ ์ž…๋ ฅ ๊ธฐ๋Šฅ : std::cin
โ€ข

>> ์—ฐ์‚ฐ์ž๋ฅผ ์ž…๋ ฅ ์ŠคํŠธ๋ฆผ์— ์ ์šฉ.

โ€ข

์‚ฌ์šฉ์ž์˜ ํ‚ค๋ณด๋“œ ์ž…๋ ฅ์„ ๋ฐ›๋Š” ๋ฐ ์ด์šฉํ•  ์ˆ˜ ์žˆ์Œ.

โ€ข

์‚ฌ์šฉ์ž ์ž…๋ ฅ์„ ๋ฐ›์„ ๋•Œ ์ž…๋ ฅ๋ฐ›๋Š” ๋ฐ์ดํ„ฐ๊ฐ€ ์–ด๋–ค ํƒ€์ž…์ธ์ง€ ์•Œ ์ˆ˜ ์—†์œผ๋ฏ€๋กœ ๊นŒ๋‹ค๋กœ์šด ๋ฉด์ด ์žˆ์Œ.
๋„ค์ž„์ŠคํŽ˜์ด์Šค
โ€ข ์ฝ”๋“œ ๋‚ด์—์„œ ์ด๋ฆ„์ด ๊ฐ™์€ ๋ณ€์ˆ˜๋ช…์ด๋‚˜ ํ•จ์ˆ˜๋ช…์ด ์„œ๋กœ ์ถฉ๋Œํ•˜๋Š” ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•ด ๊ณ ์•ˆ๋จ.
โ€ข

์˜ˆ๋ฅผ ๋“ค์–ด foo() ํ•จ์ˆ˜๋ฅผ ๋งŒ๋“ค์–ด ๋†“๊ณ , ๋‚˜์ค‘์— ์™ธ๋ถ€ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ์‚ฌ์šฉํ•ด์•ผ๋งŒ ํ•˜๋Š” ์ƒํ™ฉ์ด ๋˜์–ด์„œ ์ด์šฉํ•˜๋ ค๊ณ 
๋ดค๋”๋‹ˆ ์™ธ๋ถ€ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์—๋„ foo() ํ•จ์ˆ˜๊ฐ€ ์žˆ์„ ๋•Œ, ์ปดํŒŒ์ผ๋Ÿฌ ์ž…์žฅ์—์„œ๋Š” ์–ด๋Š foo() ํ•จ์ˆ˜๋ฅผ ์‚ฌ์šฉํ•ด์•ผ ํ•˜๋Š”์ง€
์•Œ์•„๋‚ผ ๋ฐฉ๋ฒ•์ด ์—†์Œ.

โ€ข

๋„ค์ž„์ŠคํŽ˜์ด์Šค๋Š” ํŠน์ • ์ฝ”๋“œ ์˜์—ญ์—์„œ ์ฐธ์กฐํ•˜๋Š” ์ด๋ฆ„์„ ์–ด๋Š ์ด๋ฆ„ ์ง‘ํ•ฉ์—์„œ ์ฐพ์•„์•ผ ํ•˜๋Š”์ง€ ๋ฒ”์œ„๋ฅผ ์ œ์•ˆํ•˜๋Š” ์ˆ˜๋‹จ.

โ€ข

ํŠน์ • ํ•จ์ˆ˜๋ฅผ ํŠน์ • ๋„ค์ž„์ŠคํŽ˜์ด์Šค์— ์ข…์†์‹œํ‚ค๋ ค๋ฉด ๋‹ค์Œ๊ณผ ๊ฐ™์ด ๋„ค์ž„์ŠคํŽ˜์ด์Šค ๋ธ”๋ก์œผ๋กœ ๋‘˜๋Ÿฌ์Œˆ.
โ€ข

โ€ข

namespace mycode
{
void foo();
}

ํ•จ์ˆ˜ ์„ ์–ธ๋ฟ ์•„๋‹ˆ๋ผ ํ•จ์ˆ˜ ๊ตฌํ˜„ ๋ณธ์ฒด๋„ ๋„ค์ž„์ŠคํŽ˜์ด์Šค ์•„๋ž˜์— ๋‘˜ ์ˆ˜ ์žˆ์Œ.
๋„ค์ž„์ŠคํŽ˜์ด์Šค
โ€ข ๋„ค์ž„์ŠคํŽ˜์ด์Šค ์•„๋ž˜์— ์„ ์–ธ๋œ foo() ํ•จ์ˆ˜๋ฅผ ํ˜ธ์ถœํ•  ๋•Œ๋Š” ๋„ค์ž„์ŠคํŽ˜์ด์Šค์™€ ::๋ฅผ ์•ž ์ฒจ์ž๋กœ ๋ง๋ถ™์ž„.
โ€ข

::์™€ ๊ฐ™์€ ์ฒจ์ž๋ฅผ ์Šค์ฝ”ํ”„ ์„ค์ • ์—ฐ์‚ฐ์ž(Scope Resolution Operator)๋ผ๊ณ  ํ•จ.
โ€ข

โ€ข

mycode::foo(); // โ€œmycodeโ€ ๋„ค์ž„์ŠคํŽ˜์ด์Šค์— ์†ํ•œ โ€œfooโ€ ํ•จ์ˆ˜์˜ ํ˜ธ์ถœ

๋„ค์ž„์ŠคํŽ˜์ด์Šค ์‚ฌ์šฉ์„ ๋ช…์‹œ์ ์œผ๋กœ ์„ ์–ธํ•˜๋ฉด ๊ทธ ์•„๋ž˜์— ์žˆ๋Š” ์ฝ”๋“œ์—์„œ๋Š” ์Šค์ฝ”ํ”„ ์„ค์ • ์—ฐ์‚ฐ์ž mycode::๋ฅผ ๋ถ™์ด์ง€
์•Š์•„๋„ mycode ๋„ค์ž„์ŠคํŽ˜์ด์Šค์— ์†ํ•œ ์ด๋ฆ„(ํ•จ์ˆ˜๋ช…, ๋ฐ์ดํ„ฐ ํƒ€์ž… / ๋ณ€์ˆ˜๋ช… ๋“ฑ)์„ ๋ถˆ๋Ÿฌ๋‹ค ์“ธ ์ˆ˜ ์žˆ์Œ.
โ€ข

using namespace mycode;
int main()
{
foo(); // mycode::foo();์™€ ๊ฐ™์€ ํšจ๊ณผ๋ฅผ ๊ฐ€์ง
return 0;
}
๋„ค์ž„์ŠคํŽ˜์ด์Šค
โ€ข Hello, World ์˜ˆ์ œ์—์„œ๋„ ๋„ค์ž„์ŠคํŽ˜์ด์Šค๊ฐ€ ์ด์šฉ๋จ.
โ€ข

cout๊ณผ endl์€ ๋„ค์ž„์ŠคํŽ˜์ด์Šค std์— ์†ํ•œ ๊ฒƒ๋“ค์ด๊ธฐ ๋•Œ๋ฌธ์— ๋‹ค์Œ๊ณผ ๊ฐ™์ด using ์ง€์‹œ์ž๋กœ ๋„ค์ž„์ŠคํŽ˜์ด์Šค๋ฅผ ์ด์šฉํ•˜๋ฉด
๊ฐœ๋ณ„์ ์œผ๋กœ ์Šค์ฝ”ํ”„ ์„ค์ • ์—ฐ์‚ฐ์ž std::๋ฅผ ์‚ฌ์šฉํ•˜์ง€ ์•Š์•„๋„ cout๊ณผ endl์„ ์ด์šฉํ•  ์ˆ˜ ์žˆ์Œ.
โ€ข

#include <iostream>
using namespace std;
int main()
{
cout << โ€œHello, World!โ€ << endl;
return 0;
}

โ€ข using ์ง€์‹œ์ž๋Š” ๋„ค์ž„์ŠคํŽ˜์ด์Šค์— ์†ํ•œ ์ด๋ฆ„์„ ํŠน์ •ํ•ด์„œ ์ง€์ •ํ•  ์ˆ˜๋„ ์žˆ์Œ.
โ€ข

์˜ˆ๋ฅผ ๋“ค์–ด ๋„ค์ž„์ŠคํŽ˜์ด์Šค std์˜ cout๋งŒ์„ ์Šค์ฝ”ํ”„ ์„ค์ • ์—ฐ์‚ฐ์ž ์—†์ด ์‚ฌ์šฉํ•˜๊ณ  ์‹ถ๋‹ค๋ฉด ๋‹ค์Œ๊ณผ ๊ฐ™์ด ์„ ์–ธ.
โ€ข

using std::cout;
๋ณ€์ˆ˜
โ€ข C++์—์„œ ๋ณ€์ˆ˜๋Š” ์ฝ”๋“œ ๋‚ด ์–ด๋””์„œ๋‚˜ ์„ ์–ธํ•  ์ˆ˜ ์žˆ๊ณ , ์„ ์–ธํ•œ ์ดํ›„์—๋Š” ํ•ด๋‹น ์„ ์–ธ์ด ์†ํ•œ ๋ธ”๋ก ๋‚ด์˜ ์„ ์–ธ
์ดํ›„ ์ฝ”๋“œ์—์„œ ๊ทธ ๋ณ€์ˆ˜์— ์ ‘๊ทผํ•  ์ˆ˜ ์žˆ์Œ.
โ€ข

์ดˆ๊นƒ๊ฐ’์„ ์„ค์ •ํ•˜์ง€ ์•Š๊ณ ๋„ ๊ฐ€๋Šฅํ•˜๋ฉฐ, ๊ทธ๋ ‡๊ฒŒ ํ•˜๋ฉด ๋ณ€์ˆ˜๊ฐ€ ํ• ๋‹น๋œ ๋ฉ”๋ชจ๋ฆฌ ์˜์—ญ์— ์›๋ž˜ ๋“ค์–ด ์žˆ๋˜ ๊ฐ’์ด ์‚ฌ์šฉ๋จ.

โ€ข

๋ช…์‹œ์ ์ธ ์ดˆ๊นƒ๊ฐ’ ์„ค์ •์ด ์—†๋Š” ๋ณ€์ˆ˜ ์„ ์–ธ์€ ๋ฒ„๊ทธ๋ฅผ ์œ ๋ฐœํ•˜๊ธฐ ์‰ฝ๊ธฐ ๋•Œ๋ฌธ์— ํ”ผํ•˜๋Š” ๊ฒƒ์ด ์ข‹์Œ.
โ€ข

int uninitializedInt;
int initializedInt = 7;
cout << uninitializedInt << โ€œ is a random valueโ€ << endl;
cout << initializedInt << โ€œ was assigned an initial valueโ€ << endl;
๋ณ€์ˆ˜
โ€ข C++์—์„œ ํ”ํ•˜๊ฒŒ ์ด์šฉํ•˜๋Š” ๋ณ€์ˆ˜ ํƒ€์ž….
โ€ข

int : ์Œ์ˆ˜ / ์–‘์ˆ˜ ์ •์ˆ˜. ํ‘œํ˜„ ๊ฐ€๋Šฅํ•œ ํฌ๊ธฐ๋Š” ์ปดํŒŒ์ผ๋Ÿฌ์— ๋”ฐ๋ผ ๋‹ค๋ฆ„. โ†’ int i = 7;

โ€ข

short (int) : ์ž‘์€ ์Œ์ˆ˜ / ์–‘์ˆ˜ ์ •์ˆ˜(๋ณดํ†ต 2๋ฐ”์ดํŠธ ํฌ๊ธฐ). โ†’ short s = 13;

โ€ข

long (int) : long ์ •์ˆ˜(๋ณดํ†ต 4๋ฐ”์ดํŠธ ํฌ๊ธฐ). โ†’ long l = -7;

โ€ข

[C++ 11] long long (int) : long long ์ •์ˆ˜. ํ‘œํ˜„ ๊ฐ€๋Šฅํ•œ ํฌ๊ธฐ๋Š” ์ปดํŒŒ์ผ๋Ÿฌ์— ๋”ฐ๋ผ ๋‹ค๋ฅด๋‚˜ ์ตœ์†Œ long ์ •์ˆ˜
์ด์ƒ์œผ๋กœ ๋ณดํ†ต 8๋ฐ”์ดํŠธ ํฌ๊ธฐ์ž„. โ†’ long long ll = 14;

โ€ข

unsigned int / unsigned short (int) / [C++ 11] unsigned long (int) / [C++ 11] unsigned long long (int) :
0์„ ํฌํ•จํ•œ ์–‘์ˆ˜๋งŒ ํ‘œํ˜„ ๊ฐ€๋Šฅํ•œ ์ •์ˆ˜. โ†’ unsigned int i = 2; unsigned short s = 23;
๋ณ€์ˆ˜
โ€ข C++์—์„œ ํ”ํ•˜๊ฒŒ ์ด์šฉํ•˜๋Š” ๋ณ€์ˆ˜ ํƒ€์ž….
โ€ข

float : ๋ถ€๋™์†Œ์ˆ˜์  ์ˆซ์ž. โ†’ float f = 7.2f;

โ€ข

double : ๋ฐฐ์ •๋„ ์ •๋ฐ€๋„ ๋ถ€๋™์†Œ์ˆ˜์  ์ˆซ์ž. ์ตœ์†Œํ•œ ๋ถ€๋™์†Œ์ˆ˜์  ์ด์ƒ์˜ ์ •๋ฐ€๋„ ํ‘œํ˜„ ๊ฐ€๋Šฅ. โ†’ double d = 7.2;

โ€ข

long double : long ๋ฐฐ์ •๋„ ์ •๋ฐ€๋„ ๋ถ€๋™์†Œ์ˆ˜์  ์ˆซ์ž. ์ตœ์†Œํ•œ double ์ด์ƒ์˜ ์ •๋ฐ€๋„ ํ‘œํ˜„ ๊ฐ€๋Šฅ. โ†’ long double
d = 16.98L;

โ€ข

char : 8๋น„ํŠธ ๋ฌธ์ž. โ†’ char ch = โ€˜mโ€™;

โ€ข

[C++ 11] char16_t : 16๋น„ํŠธ ๋ฌธ์ž. โ†’ char16_t c16 = uโ€™mโ€™;

โ€ข

[C++ 11] char32_t : 32๋น„ํŠธ ๋ฌธ์ž. โ†’ char32_t c32 = Uโ€™mโ€™;

โ€ข

wchar_t : ์™€์ด๋“œ ๋ฌธ์ž๋กœ ์ปดํŒŒ์ผ๋Ÿฌ์— ๋”ฐ๋ผ ๋‹ค๋ฆ„. โ†’ wchar_t w = Lโ€™mโ€™;
๋ณ€์ˆ˜

โ€ข C++์—์„œ ํ”ํ•˜๊ฒŒ ์ด์šฉํ•˜๋Š” ๋ณ€์ˆ˜ ํƒ€์ž….
โ€ข

bool : ์ฐธ(true) ๋˜๋Š” ๊ฑฐ์ง“(false)๋ฅผ ๋‚˜ํƒ€๋‚ด๋Š” ๋…ผ๋ฆฌ ํƒ€์ž…. โ†’ bool b = true;

โ€ข

[C++ 11] auto : ์ปดํŒŒ์ผ๋Ÿฌ์— ์˜ํ•ด ์ž๋™์œผ๋กœ ํƒ€์ž…์ด ์ •ํ•ด์ง€๋Š” ํƒ€์ž…. โ†’ auto i = 7; // i๋Š” ์ž๋™์œผ๋กœ intํ˜•์ด ๋จ

โ€ข

[C++ 11] decltype(expr) : โ€œexprโ€์ด ๋‚˜ํƒ€๋‚ด๋Š” ํƒ€์ž…๊ณผ ๊ฐ™์€ ํƒ€์ž…์„ ๋”ฐ๋ฅด๋Š” ํƒ€์ž…. โ†’ int i = 7; decltype(i) j = 8;
// j๋Š” i์˜ ํƒ€์ž…์„ ๋”ฐ๋ผ int๊ฐ€ ๋จ
๋ณ€์ˆ˜
โ€ข C++์—์„œ๋Š” ๋ช…์‹œ์ ์ธ ๋ณ€์ˆ˜ ํƒ€์ž… ์บ์ŠคํŒ…์„ ์œ„ํ•ด ์„ธ ๊ฐ€์ง€ ๋ฐฉ๋ฒ•์„ ์ง€์›.
โ€ข

1. ๋ณ€์ˆ˜ ์•ž์— ์บ์ŠคํŒ…ํ•  ํƒ€์ž…์„ ๊ด„ํ˜ธ๋กœ ๋ช…์‹œ.
โ€ข

โ€ข

2. ํƒ€์ž… ์ƒ์„ฑ์ž ํ•จ์ˆ˜๋ฅผ ์ด์šฉ.
โ€ข

โ€ข

bool someBool = (bool)someInt;

bool someBool = bool(someInt);

3. ์บ์ŠคํŒ… ์—ฐ์‚ฐ์ž๋ฅผ ์ด์šฉ.
โ€ข

bool someBool = static_cast<bool>(someInt);

โ€ข int ๋ณ€์ˆ˜์˜ ๊ฐ’์ด 0์ด๋ฉด false๋กœ, 0์ด ์•„๋‹ˆ๋ฉด true๋กœ ๋ณ€ํ™˜.
๋ณ€์ˆ˜

โ€ข Coerced ์บ์ŠคํŒ… : ์–ด๋–ค ์ƒํ™ฉ์—์„œ๋Š” ๋ณ€์ˆ˜์˜ ํƒ€์ž… ์บ์ŠคํŒ…์ด ์ž๋™์œผ๋กœ ์ผ์–ด๋‚  ์ˆ˜๋„ ์žˆ์Œ.
โ€ข

์˜ˆ๋ฅผ ๋“ค์–ด short ํƒ€์ž… ๋ณ€์ˆ˜๋Š” long ํƒ€์ž… ๋ณ€์ˆ˜๋กœ ๋ช…์‹œ์ ์ธ ํƒ€์ž… ์บ์ŠคํŒ… ์—†์ด๋„ ์ž๋™์œผ๋กœ ์บ์ŠคํŒ… ๋  ์ˆ˜๋„ ์žˆ์Œ.

โ€ข

์™œ๋ƒํ•˜๋ฉด long ํƒ€์ž…์€ short ํƒ€์ž…๊ณผ ๊ฐ™์ด ์ •์ˆ˜๋ฅผ ํ‘œํ˜„ํ•˜๋ฉด์„œ๋„ ๊ทธ ํ‘œํ˜„ ๋ฒ”์œ„๊ฐ€ ๋” ๋„“๊ธฐ ๋•Œ๋ฌธ.
โ€ข

long someLong = someShort; // ๋ช…์‹œ์ ์ธ ํƒ€์ž… ์บ์ŠคํŒ…์ด ์—†์–ด๋„ ๋œ๋‹ค.

โ€ข ๋ณ€์ˆ˜๊ฐ€ ์ž๋™์œผ๋กœ ํƒ€์ž… ์บ์ŠคํŒ…๋  ๋•Œ ๋ฐ์ดํ„ฐ์— ์†์‹ค์ด ์—†๋Š”์ง€ ๊ณ ๋ คํ•ด์•ผ ํ•จ.
โ€ข

์˜ˆ๋ฅผ ๋“ค์–ด float ๋ณ€์ˆ˜๊ฐ€ int ๋ณ€์ˆ˜๋กœ ์บ์ŠคํŒ…๋œ๋‹ค๋ฉด ์†Œ์ˆ˜์  ์ดํ•˜ ๊ฐ’๋“ค์€ ์žƒ์–ด๋ฒ„๋ฆฌ๊ฒŒ ๋จ.
์—ฐ์‚ฐ์ž
โ€ข C++ ์—ฐ์‚ฐ์ž์—๋Š” ์ดํ•ญ ์—ฐ์‚ฐ์ž(๋‘ ๊ฐœ์˜ ๋ณ€์ˆ˜๋ฅผ ๋Œ€์ƒ์œผ๋กœ ํ•˜๋Š” ์—ฐ์‚ฐ์ž)์™€ ๋‹จํ•ญ ์—ฐ์‚ฐ์ž(ํ•˜๋‚˜์˜ ๋ณ€์ˆ˜๋ฅผ
๋Œ€์ƒ์œผ๋กœ ํ•˜๋Š” ์—ฐ์‚ฐ์ž) ๊ทธ๋ฆฌ๊ณ  ์‚ผํ•ญ ์—ฐ์‚ฐ์ž(์„ธ ๊ฐœ์˜ ๋ณ€์ˆ˜๋ฅผ ๋Œ€์ƒ์œผ๋กœ ํ•˜๋Š” ์—ฐ์‚ฐ์ž)๊ฐ€ ์žˆ์Œ.
โ€ข C++ ์—ฐ์‚ฐ์ž์˜ ์ข…๋ฅ˜
โ€ข

= : ์ดํ•ญ ์—ฐ์‚ฐ์ž๋กœ ์˜ค๋ฅธ์ชฝ์— ์žˆ๋Š” ๊ฐ’์„ ์™ผ์ชฝ์— ์žˆ๋Š” ๋ณ€์ˆ˜๋กœ ๋Œ€์ž…. โ†’ int i; i = 3; int j; j = i;

โ€ข

! : ๋‹จํ•ญ ์—ฐ์‚ฐ์ž๋กœ, true / false ๋…ผ๋ฆฌ๊ฐ’์„ ๋ฐ˜์ „. โ†’ bool b = !true; bool b2 = !b;

โ€ข

+ : ๋ง์…ˆ์„ ์œ„ํ•œ ์ดํ•ญ ์—ฐ์‚ฐ์ž. โ†’ int i = 3 + 2; int j = i + 5; int k = i + j;

โ€ข

-, *, / : ๊ฐ๊ฐ ๋บ„์…ˆ, ๊ณฑ์…ˆ, ๋‚˜๋ˆ—์…ˆ์„ ์œ„ํ•œ ์ดํ•ญ ์—ฐ์‚ฐ์ž. โ†’ int i = 5 โ€“ 1; int j = 5 * 2; int k = j / i;

โ€ข

% : ์ •์ˆ˜ ๋‚˜๋ˆ—์…ˆ์—์„œ์˜ ๋‚˜๋จธ์ง€ ๊ฐ’์„ ๊ตฌํ•จ. โ†’ int remainder = 5 % 2;
์—ฐ์‚ฐ์ž
โ€ข C++ ์—ฐ์‚ฐ์ž์˜ ์ข…๋ฅ˜
โ€ข

++ : ๋ณ€์ˆซ๊ฐ’ 1์„ ์ฆ๊ฐ€์‹œํ‚ค๋Š” ๋‹จํ•ญ ์—ฐ์‚ฐ์ž. ์—ฐ์‚ฐ์ž๊ฐ€ ๋ณ€์ˆ˜ ์˜ค๋ฅธ์ชฝ์— ์žˆ์œผ๋ฉด โ€œ์‚ฌํ›„ ์ฆ๊ฐ€โ€๊ฐ€ ์ ์šฉ๋˜์–ด ํ•ด๋‹น ์ฝ”๋“œ
๋ผ์ธ์—์„œ๋Š” ์ฆ๊ฐ€ํ•˜๊ธฐ ์ „์˜ ๊ฐ’์„ ๊ฐ€์ง€๋‚˜ ๊ทธ ๋ผ์ธ์„ ๋ฒ—์–ด๋‚˜๋ฉด 1 ์ฆ๊ฐ€. ์—ฐ์‚ฐ์ž๊ฐ€ ๋ณ€์ˆ˜ ์™ผ์ชฝ์— ์žˆ์œผ๋ฉด โ€œ์‚ฌ์ „ ์ฆ๊ฐ€โ€๊ฐ€
์ ์šฉ๋˜์–ด ๋ฐ”๋กœ ํ•ด๋‹น ์ฝ”๋“œ ๋ผ์ธ์—์„œ 1 ์ฆ๊ฐ€ํ•œ ๊ฐ’์„ ๊ฐ€์ง. โ†’ i++; ++i;

โ€ข

-- : ๋ณ€์ˆซ๊ฐ’์„ 1 ๊ฐ์†Œ์‹œํ‚ค๋Š” ๋‹จํ•ญ ์—ฐ์‚ฐ์ž. ++์™€ ๋งˆ์ฐฌ๊ฐ€์ง€๋กœ ์—ฐ์‚ฐ์ž ์œ„์น˜์— ๋”ฐ๋ผ ์‚ฌํ›„ ๊ฐ์†Œ ๋˜๋Š” ์‚ฌ์ „ ๊ฐ์†Œ๊ฐ€ ์ ์šฉ.
โ†’ i--; --i;

โ€ข

+=, -=, *=, /=, %= : ๊ฐ๊ฐ i = i + j; i = i โ€“ j; i = i * j; i = i / j; i = i % j;์˜ ์ถ•์•ฝํ˜•.

โ€ข

&, &= : ๋‘ ๋ณ€์ˆ˜์˜ ๊ฐ ๋น„ํŠธ ๊ฐ’์— AND ์—ฐ์‚ฐ์„ ํ•จ. โ†’ i = j & k; j &= k;

โ€ข

I, I= : ๋‘ ๋ณ€์ˆ˜์˜ ๊ฐ ๋น„ํŠธ ๊ฐ’์— OR ์—ฐ์‚ฐ์„ ํ•จ. โ†’ i = j | k; j |= k;
์—ฐ์‚ฐ์ž
โ€ข C++ ์—ฐ์‚ฐ์ž์˜ ์ข…๋ฅ˜
โ€ข

<<, >>, <<=, >>= : ์™ผ์ชฝ ๋ณ€์ˆ˜์˜ ๋น„ํŠธ ์—ด์„ ์˜ค๋ฅธ์ชฝ ๊ฐ’๋งŒํผ ์™ผ์ชฝ(<<) ๋˜๋Š” ์˜ค๋ฅธ์ชฝ(>>)์œผ๋กœ ์‹œํ”„ํŠธ(Shift). โ†’ i =
i << 1; i = i >> 4; i <<= 1; i >>= 4;

โ€ข

^, ^= : ๋‘ ๋ณ€์ˆ˜์˜ ๊ฐ ๋น„ํŠธ ๊ฐ’์— ๋ฐฐํƒ€์  ๋…ผ๋ฆฌํ•ฉ(Exclusive OR) ์—ฐ์‚ฐ์„ ํ•จ. โ†’ i = i ^ j, i ^= j;

โ€ข ์—ฐ์‚ฐ ์ˆ˜์‹์„ ์ดํ•ดํ•˜๊ธฐ ์‰ฌ์šด ์กฐ๊ฐ์œผ๋กœ ์ชผ๊ฐœ๊ฑฐ๋‚˜ ๊ด„ํ˜ธ๋ฅผ ์ด์šฉํ•˜์—ฌ ๋ช…์‹œ์ ์œผ๋กœ ์ˆœ์„œ๋ฅผ ์ง€์ •ํ•˜๋Š” ๊ฒƒ์ด ์ข‹์Œ.
โ€ข

int i = 34 + 8 * 2 + 21 / 7 % 2;

โ€ข

int i = 34 + (8 * 2) + ((21 / 7) % 2);

โ€ข

int i = 8 * 2;
int j = 21 / 7;
j %= 2;
i = 34 + i + j;
์—ฐ์‚ฐ์ž
โ€ข #include <iostream>
using namespace std;
int main()
{
int someInteger = 256; short someShort; long someLong;
float someFloat; double someDouble;
someInteger++; someInteger *= 2;
someShort = (short)someInteger; someLong = someShort * 10000;
someFloat = someLong + 0.785; someDouble = (double)someFloat / 100000;
cout << someDouble << endl;
return 0;
}
์—ด๊ฑฐ ํƒ€์ž…
โ€ข ์—ด๊ฑฐ(Enumeration) ํƒ€์ž…์€ ์–ด๋–ค ์ˆซ์ž๋“ค์„ ๋‚˜์—ดํ• ์ง€ ํ”„๋กœ๊ทธ๋ž˜๋จธ๊ฐ€ ๋งˆ์Œ๋Œ€๋กœ ์ •ํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ•ด์คŒ.
โ€ข

์˜ˆ๋ฅผ ๋“ค์–ด ์ฒด์Šค ํ”„๋กœ๊ทธ๋žจ์ด๋ผ๋ฉด ๊ฐ๊ฐ์˜ ๋ง์— ํŠน์ • int ๊ฐ’์„ ํ• ๋‹นํ•˜์—ฌ ๋ง์˜ ์ข…๋ฅ˜๋ฅผ ๋‚˜ํƒ€๋‚ด๋Š” ๊ณ ์œ  ๋ฒˆํ˜ธ๋กœ ์ด์šฉ.
โ€ข

โ€ข

const int kPieceTypeKing = 0;
const int kPieceTypeQueen = 1;
const int kPieceTypeRook = 2;
const int kPieceTypePawn = 3;
// etc
int myPiece = kPieceTypeKing;

์ด์™€ ๊ฐ™์ด ๊ฐ’์„ ์ •์˜ํ•ด๋„ ๋˜์ง€๋งŒ, ์ž˜๋ชป ์‚ฌ์šฉ๋  ๊ฐ€๋Šฅ์„ฑ์ด ์žˆ์Œ.
โ€ข

๋งŒ์•ฝ ๋‹ค๋ฅธ ํ”„๋กœ๊ทธ๋ž˜๋จธ๊ฐ€ ๊ฐ ๋ง์˜ ๊ฐ’์— ๋Œ€ํ•ด ์‹ค์ˆ˜๋กœ 1์”ฉ ๋”ํ•ด์„œ ์‚ฌ์šฉํ•œ๋‹ค๋ฉด ์™•์ด ์™•๋น„๊ฐ€ ๋˜์–ด ๋ฒ„๋ฆผ.

โ€ข

์ตœ์•…์˜ ์ƒํ™ฉ์œผ๋กœ -1๊ณผ ๊ฐ™์ด ์–ด๋Š ๋ง์˜ ๊ณ ์œณ๊ฐ’๊ณผ๋„ ๋งค์นญ์ด ์•ˆ๋˜๋Š” ์—‰๋šฑํ•œ ๊ฐ’์„ ์ด์šฉํ•ด ๋ฒ„๋ฆด ์ˆ˜๋„ ์žˆ์Œ.
์—ด๊ฑฐ ํƒ€์ž…
โ€ข ์—ด๊ฑฐ ํƒ€์ž…์€ ์ด๋Ÿฌํ•œ ๋ฌธ์ œ๋ฅผ ๋‚˜์—ดํ•˜๋Š” ๊ฐ’ ๋ชฉ๋ก๊ณผ ๋ฒ”์œ„๋ฅผ ์—„๊ฒฉํ•˜๊ฒŒ ๊ด€๋ฆฌํ•จ์œผ๋กœ์จ ๋ฐฉ์ง€.
โ€ข

typedef enum { kPieceTypeKing, kPieceTypeQueen, kPieceTypeRook, kPieceTypePawn } PieceT;

โ€ข ์‹ค์ œ๋กœ ์—ด๊ฑฐ ํƒ€์ž…์€ ์ปดํŒŒ์ผ๋Ÿฌ ์•ˆ์—์„œ ์ •์ˆ˜ ํƒ€์ž…์œผ๋กœ ์ฒ˜๋ฆฌ.
โ€ข

์˜ˆ๋ฅผ ๋“ค์–ด kPieceTypeKing์˜ ์‹ค์ œ ๊ฐ’์€ ์ •์ˆ˜ 0.

โ€ข ํ•˜์ง€๋งŒ PieceT์˜ ๊ฐ€๋Šฅํ•œ ๊ฐ’ ๋ชฉ๋ก์„ ์ •ํ•จ์œผ๋กœ์จ PieceT ํƒ€์ž… ๋ณ€์ˆ˜๊ฐ€ ์ •ํ•ด์ง„ ๊ฐ’ ๋ชฉ๋ก ์ด๋ฆ„ ์ด์™ธ์˜ ๊ฐ’์œผ๋กœ
์„ค์ •๋  ๋•Œ ์ปดํŒŒ์ผ๋Ÿฌ๊ฐ€ ์—๋Ÿฌ ๋ฉ”์‹œ์ง€๋ฅผ ์ถœ๋ ฅํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ•ด์คŒ.
โ€ข

PieceT myPiece;
myPiece = 0;
์—ด๊ฑฐ ํƒ€์ž…

โ€ข ์—ด๊ฑฐ ํƒ€์ž…์˜ ๊ฐ ํ•ญ๋ชฉ์— ๋Œ€ํ•ด ๊ฐœ๋ณ„์ ์œผ๋กœ ํŠน์ • ์ •์ˆ˜ ๊ฐ’์„ ํ• ๋‹นํ•˜๋Š” ๊ฒƒ๋„ ๊ฐ€๋Šฅ.
โ€ข

typedef enum { kPieceTypeKing = 1, kPieceTypeQueen,
kPieceTypeRook = 10, kPieceTypePawn } PieceT;
โ€ข

kPieceTypeKing์ด ๊ฐ’ 1์„ ๋ช…์‹œ์ ์œผ๋กœ ํ• ๋‹น๋ฐ›์•˜๊ธฐ์— ๋ฐ”๋กœ ๋’ค๋”ฐ๋ฅด๋Š” kPieceTypeQueen์€ ์ปดํŒŒ์ผ๋Ÿฌ์— ์˜ํ•ด 1 ์ฆ๊ฐ€ํ•œ ๊ฐ’
2๋ฅผ ์ž๋™์œผ๋กœ ํ• ๋‹น๋ฐ›์Œ.

โ€ข

๋ช…์‹œ์ ์œผ๋กœ 10์„ ํ• ๋‹น๋ฐ›์€ kPieceTypeRook์˜ ๋ฐ”๋กœ ๋’ค์— ์žˆ๋Š” kPieceTypePawn๋„ 1 ์ฆ๊ฐ€ํ•œ 11์„ ์ž๋™์œผ๋กœ ํ• ๋‹น๋ฐ›์Œ.
[C++ 11] ์—„๊ฒฉํ•œ ์—ด๊ฑฐ ํƒ€์ž…
โ€ข ์•ž์„œ ์„ค๋ช…ํ•œ ์—ด๊ฑฐ ํƒ€์ž…์€ ํƒ€์ž… ์„ธ์ดํ”„ํ•˜์ง€ ์•Š์Œ.
โ€ข

๊ธฐ๋ณธ์ ์œผ๋กœ ์ •์ˆ˜ ํƒ€์ž… ์ทจ๊ธ‰์„ ๋ฐ›๊ธฐ ๋•Œ๋ฌธ์— ์„œ๋กœ ์™„์ „ ๋ณ„๊ฐœ์ธ ์—ด๊ฑฐ ํƒ€์ž… ๊ฐ„์— ๋น„๊ต ์—ฐ์‚ฐ์ด ๊ฐ€๋Šฅ.

โ€ข

C++ 11์—์„œ๋Š” ์ด๋Ÿฐ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•ด enum class๋ฅผ ๋„์ž….
โ€ข

โ€ข

enum class MyEnum
{
EnumValue1,
EnumValue2 = 10,
EnumValue3
};

MyEnum์€ ํƒ€์ž… ์„ธ์ดํ”„ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์—ด๊ฑฐ ๊ฐ’์ด ๋‹ค๋ฅธ ์ •์ˆ˜ ํƒ€์ž… ๋ณ€์ˆ˜๋กœ ์ž๋™์œผ๋กœ ์บ์ŠคํŒ…๋˜์ง€ ์•Š๊ณ  class ์ด๋ฆ„์œผ๋กœ
์Šค์ฝ”ํ”„ ์„ค์ •์ด ๋˜์ง€ ์•Š์œผ๋ฉด ์ฐธ์กฐํ•  ์ˆ˜๋„ ์—†์Œ.
[C++ 11] ์—„๊ฒฉํ•œ ์—ด๊ฑฐ ํƒ€์ž…
โ€ข ์ผ๋ฐ˜ ์ •์ˆ˜ ๊ฐ’๊ณผ MyEnum ๊ฐ’์˜ ๋น„๊ต๋Š” C++ 11์—์„œ ๋ฌธ๋ฒ• ์œ„๋ฐ˜.
โ€ข

if (MyEnum::EnumValue3 == 11) { โ€ฆ }

โ€ข ์—ด๊ฑฐ ํƒ€์ž…์€ ๊ธฐ๋ณธ์ ์œผ๋กœ int ํƒ€์ž…๊ณผ ์—ฐ๊ณ„๋˜์ง€๋งŒ enum class์—์„œ๋Š” ๊ฐ’์˜ ํƒ€์ž…์„ ๋ฐ”๊ฟ€ ์ˆ˜๋„ ์žˆ์Œ.
โ€ข

enum class MyEnumLong : unsigned long
{
EnumValueLong1,
EnumValueLong2 = 10,
EnumValueLong3
};
๊ตฌ์กฐ์ฒด
โ€ข ๊ตฌ์กฐ์ฒด๋Š” ๊ธฐ๋ณธ ํƒ€์ž… ๋˜๋Š” ๋‹ค๋ฅธ ๊ตฌ์กฐ์ฒด๋ฅผ ์กฐํ•ฉํ•˜์—ฌ ์ƒˆ๋กœ์šด ํƒ€์ž…์„ ๋งŒ๋“ค์–ด๋ƒ„.
โ€ข

๊ฐ€์žฅ ํ”ํ•œ ์˜ˆ๋Š” ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์˜ ๋ ˆ์ฝ”๋“œ ํ•˜๋‚˜๋ฅผ ๋‚˜ํƒ€๋‚ด๋Š” ๊ฒƒ.

โ€ข

์˜ˆ๋ฅผ ๋“ค์–ด ์ง์›์˜ ์‹ ์ƒ๋ช…์„ธ๋ฅผ ๊ธฐ๋กํ•˜๋Š” ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋ผ๋ฉด ์ง์›๋ณ„๋กœ ์ด๋ฆ„์˜ ์ฒซ ๊ธ€์ž์™€ ์ง์› ๋“ฑ๋ก ๋ฒˆํ˜ธ, ๊ธ‰์—ฌ ์ •๋ณด๊ฐ€
์žˆ๋‹ค๋ฉด ๊ตฌ์กฐ์ฒด๋กœ ์ •์˜ํ•˜์—ฌ ํ—ค๋” ํŒŒ์ผ์— ๋‘˜ ์ˆ˜ ์žˆ์Œ.
โ€ข

โ€ข

typedef struct
{
char firstInitial;
char middleInitial;
char lastInitial;
int employeeNumber;
int salary;
} EmployeeT;

EmployeeT ํƒ€์ž…์œผ๋กœ ๋ณ€์ˆ˜๋ฅผ ์„ ์–ธํ•˜๋ฉด ์œ„์˜ ๊ฐ ํ•ญ๋ชฉ์„ ๋ชจ๋‘ ๊ฐ€์ง„ ๋ฐ์ดํ„ฐ๊ฐ€ ๋จ.
๊ตฌ์กฐ์ฒด
โ€ข #include <iostream>
using namespace std;
int main()
{
EmployeeT e;
e.firstInitial = โ€˜Mโ€™; e.middleInitial = โ€˜Rโ€™; e.lastInitial = โ€˜Gโ€™;
e.employeeNumber = 42; e.salary = 80000;
cout << โ€œEmployee: โ€œ << e.firstInitial << e.middleInitial << e.lastInitial << endl;
cout << โ€œNumber: โ€œ << e.employeeNumber << endl;
cout << โ€œSalary: โ€œ << e.salary << endl;
return 0;
}
IF/ELSE ๊ตฌ๋ฌธ
โ€ข if ๊ตฌ๋ฌธ์€ ์กฐ๊ฑด์ด ์ฐธ์ด๋ฉด if ๋ฌธ ์•„๋ž˜ ๋ธ”๋ก ๋˜๋Š” ๋ธ”๋ก์ด ์—†์„ ๊ฒฝ์šฐ ๋ฐ”๋กœ ํ›„์†๋˜๋Š” ๋ผ์ธ์˜ ์ฝ”๋“œ๋ฅผ ์‹คํ–‰.
โ€ข ์กฐ๊ฑด์ด ๊ฑฐ์ง“์ด๋ฉด else ๋ธ”๋ก์˜ ์ฝ”๋“œ๋ฅผ ์‹คํ–‰. else ๋ธ”๋ก์ด ์—†์œผ๋ฉด if ๋ฌธ ๋ธ”๋ก์˜ ํ›„ ์† ์ฝ”๋“œ๊ฐ€ ์‹คํ–‰.
โ€ข if (i > 4) {
// ์ž‘์—… ์ˆ˜ํ–‰
} else if (i > 2) {
// ๋‹ค๋ฅธ ์ž‘์—… ์ˆ˜ํ–‰
} else {
// ๋˜ ๋‹ค๋ฅธ ์ž‘์—… ์ˆ˜ํ–‰
}
โ€ข if ๋ฌธ์˜ ๊ด„ํ˜ธ ์˜์—ญ์— ๋“ค์–ด๊ฐˆ ๊ตฌ๋ฌธ์€ ๋ฐ˜๋“œ์‹œ ๋ถˆ(Boolean) ๋ณ€์ˆ˜์ด๊ฑฐ๋‚˜ ๋ถˆ ํƒ€์ž…์˜ ๊ฒฐ๊ณผ ๊ฐ’์„ ๊ฐ€์ ธ์•ผ ํ•จ.
SWITCH ๊ตฌ๋ฌธ
โ€ข switch ๊ตฌ๋ฌธ์€ ๋ณ€์ˆซ๊ฐ’์— ๋”ฐ๋ฅธ ์ฝ”๋“œ ๋ถ„๊ธฐ๋ฅผ ํŽธ๋ฆฌํ•˜๊ฒŒ ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ•ด์คŒ.
โ€ข switch ๊ตฌ๋ฌธ์—์„œ๋Š” ๋ณ€์ˆ˜๋ฅผ ์ƒ์ˆซ๊ฐ’๊ณผ ๋น„๊ตํ•ด์•ผ ํ•˜๋ฏ€๋กœ if ๊ตฌ๋ฌธ์—์„œ์ฒ˜๋Ÿผ โ€œ~๋ณด๋‹ค ํฌ๊ฑฐ๋‚˜ ์ž‘์€โ€๊ณผ ๊ฐ™์€
์กฐ๊ฑด์€ switch ๊ตฌ๋ฌธ์œผ๋กœ ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์—†์Œ.
โ€ข ๊ฐ ์ƒ์ˆซ๊ฐ’์€ case ๊ตฌ๋ฌธ์— ๋Œ€์‘๋˜์–ด ํ•ด๋‹น ๋ณ€์ˆ˜๊ฐ€ ํŠน์ • ์ƒ์ˆซ๊ฐ’๊ณผ ๊ฐ™์œผ๋ฉด ํ•ด๋‹น case ๊ตฌ๋ฌธ์˜ ์ฝ”๋“œ๊ฐ€ break
๊ตฌ๋ฌธ์„ ๋งŒ๋‚  ๋•Œ๊นŒ์ง€ ์‹คํ–‰๋จ.
โ€ข ์–ด๋Š ์ƒ์ˆซ๊ฐ’์—๋„ ํ•ด๋‹นํ•˜์ง€ ์•Š์„ ๋•Œ ์‹คํ–‰ํ•  ์ฝ”๋“œ๊ฐ€ ์žˆ๋‹ค๋ฉด default ๊ตฌ๋ฌธ์œผ๋กœ ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์žˆ์Œ.
โ€ข break ๊ตฌ๋ฌธ์„ ๋น ๋œจ๋ฆฌ๋ฉด ์˜๋„ํ•˜์ง€ ์•Š๊ฒŒ ๋‹ค์Œ case(๋˜๋Š” default)์— ํ•ด๋‹นํ•˜๋Š” ์ฝ”๋“œ๊นŒ์ง€ ์ˆ˜ํ–‰๋˜์–ด ๋ฒ„๋ฆฌ๋ฏ€๋กœ
์ฃผ์˜ํ•ด์•ผ ํ•จ.
SWITCH ๊ตฌ๋ฌธ
โ€ข switch (menuItem) {
case kOpenMenuItem:
// ํŒŒ์ผ ์—ด๊ธฐ ์ฝ”๋“œ
break;
case kSaveMenuItem:
// ํŒŒ์ผ ์ €์žฅ ์ฝ”๋“œ
break;
default:
// ์—๋Ÿฌ ๋ฉ”์‹œ์ง€ ์ถœ๋ ฅ ์ฝ”๋“œ
break;
}
์‚ผํ•ญ ์—ฐ์‚ฐ์ž

โ€ข C++์˜ ์œ ์ผํ•œ ์‚ผํ•ญ ์—ฐ์‚ฐ์ž
โ€ข

โ€œ๋งŒ์•ฝ ~์ด๋ฉด ~ํ•˜๊ณ  ์•„๋‹ˆ๋ฉด ~ํ•œ๋‹คโ€๋ฅผ ์ถ•์•ฝ์ ์œผ๋กœ ํ‘œํ˜„ํ•˜๋Š” ๋ฌธ๋ฒ•์œผ๋กœ ?๊ณผ :๋กœ ์ด๋ฃจ์–ด์ง.

โ€ข

std::cout << ((i > 2) ? โ€œyesโ€ : โ€œnoโ€);
โ€ข

i๊ฐ€ 2๋ณด๋‹ค ํฌ๋ฉด yes๋ฅผ ์ถœ๋ ฅํ•˜๊ณ  ์•„๋‹ˆ๋ฉด no๋ฅผ ์ถœ๋ ฅํ•˜๋Š” ์ฝ”๋“œ.
์กฐ๊ฑด ์—ฐ์‚ฐ์ž
โ€ข ์ผ๋ฐ˜์ ์ธ ์กฐ๊ฑด ์—ฐ์‚ฐ์ž์— ๋Œ€ํ•œ ์„ค๋ช….
โ€ข

<, <=, >, >= : ์™ผ์ชฝ ๊ฐ’์„ ์˜ค๋ฅธ์ชฝ ๊ฐ’๊ณผ ๋น„๊ตํ•˜์—ฌ, ์ž‘๊ฑฐ๋‚˜, ์ž‘๊ฑฐ๋‚˜ / ๊ฐ™๊ฑฐ๋‚˜, ํฌ๊ฑฐ๋‚˜, ํฌ๊ฑฐ๋‚˜ / ๊ฐ™๊ฑฐ๋‚˜์— ๋”ฐ๋ผ ์ฐธ,
๊ฑฐ์ง“์„ ๋ฆฌํ„ดํ•จ. โ†’ if (i < 0) { std::cout << โ€œi๋Š” ์Œ์ˆ˜์ด๋‹ค.โ€; }

โ€ข

== : ์™ผ์ชฝ / ์˜ค๋ฅธ์ชฝ ๊ฐ’์ด ๊ฐ™์œผ๋ฉด ์ฐธ. ๋Œ€์ž… ์—ฐ์‚ฐ์ž =๊ณผ ํ˜ผ๋™ํ•˜์ง€ ์•Š๋„๋ก ์ฃผ์˜. โ†’ if (i == 3) { std::cout << โ€œi๋Š”
3์ด๋‹ค.โ€; }

โ€ข

!= : ์™ผ์ชฝ / ์˜ค๋ฅธ์ชฝ ๊ฐ’์ด ๋‹ค๋ฅด๋ฉด ์ฐธ. โ†’ if (i != 3) { std::cout << โ€œi๋Š” 3์ด ์•„๋‹ˆ๋‹ค.โ€; }

โ€ข

! : ๋‹จํ•ญ ์—ฐ์‚ฐ์ž๋กœ, ๋…ผ๋ฆฌ ๊ธฐํ˜ธ NOT๊ณผ ๊ฐ™์Œ. ์ฐธ / ๊ฑฐ์ง“์˜ ๊ฒฐ๊ณผ๋ฅผ ๋ฐ˜์ „์‹œํ‚ด. โ†’ if (!someBoolean) { std::cout
<< โ€œsomeBoolean์€ ๊ฑฐ์ง“์ด๋‹ค.โ€; }

โ€ข

&& : ๋…ผ๋ฆฌ ๊ธฐํ˜ธ AND์™€ ๊ฐ™์Œ. ์™ผ์ชฝ๊ณผ ์˜ค๋ฅธ์ชฝ ๋ณ€์ˆ˜ ๋˜๋Š” ํ‘œํ˜„์‹์˜ ๊ฒฐ๊ณผ๊ฐ€ ๋ชจ๋‘ ์ฐธ์ด๋ฉด ์ฐธ์„ ๋ฆฌํ„ด. โ†’ if
(someBoolean && someOtherBoolean) { std::cout << โ€œ์–‘์ชฝ ๋‹ค ์ฐธ์ด๋‹ค.โ€; }

โ€ข

|| : ๋…ผ๋ฆฌ ๊ธฐํ˜ธ OR๊ณผ ๊ฐ™์Œ. ์™ผ์ชฝ / ์˜ค๋ฅธ์ชฝ ์–ด๋Š ์ชฝ์ด๋“  ์ฐธ์ด๋ฉด ์ฐธ์„ ๋ฆฌํ„ด. โ†’ if (someBoolean ||
someOtherBoolean) { std::cout << โ€œ์ตœ์†Œํ•œ ๋‘˜ ์ค‘ ํ•˜๋‚˜๋Š” ์ฐธ์ด๋‹ค.โ€; }
์กฐ๊ฑด ์—ฐ์‚ฐ์ž
โ€ข C++๋Š” ํ‘œํ˜„์‹์„ ์‹คํ–‰ํ•  ๋•Œ ๋‹จ๋ฝ ๋…ผ๋ฆฌ(Short-Circuit Logic)๋ฅผ ์ ์šฉ.
โ€ข

์กฐ๊ฑด๋ฌธ์˜ ์ตœ์ข… ๊ฒฐ๊ณผ๊ฐ€ ๋‚จ์•„์žˆ๋Š” ํ‘œํ˜„์‹์˜ ๊ฒฐ๊ณผ์— ๊ด€๊ณ„์—†์ด ํ™•์ •๋  ์ˆ˜ ์žˆ๋‹ค๋ฉด ํ‘œํ˜„์‹๋“ค์€ ์‹คํ–‰ํ•˜์ง€ ์•Š์Œ.

โ€ข

์˜ˆ๋ฅผ ๋“ค์–ด ์—ฌ๋Ÿฌ ํ‘œํ˜„์‹ ํ•ญ๋ชฉ์— ๋Œ€ํ•ด OR ์—ฐ์‚ฐ์„ ํ•  ๋•Œ ๊ฐ ํ‘œํ˜„์‹์˜ ํ•ญ๋ชฉ์„ ์‹คํ–‰ํ•˜๋˜ ์ค‘์— ๊ฒฐ๊ณผ๊ฐ€ ์ฐธ์ธ ๊ฒƒ์„ ๋งŒ๋‚˜๋ฉด
๊ทธ ์ดํ›„์˜ ํ•ญ๋ชฉ์˜ ๊ฒฐ๊ณผ์— ๊ด€๊ณ„์—†์ด ์ „์ฒด ์กฐ๊ฑด ๊ตฌ๋ฌธ์˜ ๊ฐ’์ด ์ฐธ์ด ๋˜๋ฏ€๋กœ ์ดํ›„ ํ•ญ๋ชฉ์€ ์‹คํ–‰ํ•ด๋ณด์ง€ ์•Š์Œ.

โ€ข

bool result = bool1 || bool2 || (i > 7) || (27 / 13 % i + 1) < 2;
โ€ข

bool1์ด ์ฐธ์œผ๋กœ ํŒ๋ช…๋˜์—ˆ๋‹ค๋ฉด ์ „์ฒด ๊ฒฐ๊ณผ๋Š” ๋ฌด์กฐ๊ฑด ์ฐธ์ด ๋˜๋ฏ€๋กœ ๋‚˜๋จธ์ง€ ๋ถ€๋ถ„์˜ ๊ณ„์‚ฐ์€ ์ƒ๋žต.

โ€ข

๋ถˆํ•„์š”ํ•œ ์ž‘์—…์ด ์‹คํ–‰๋˜์ง€ ์•Š๋„๋ก ์–ธ์–ด ์ฐจ์›์—์„œ ์ตœ์ ํ™”๋จ.

โ€ข

ํ•˜์ง€๋งŒ ํŠน์ • ํ‘œํ˜„์‹์ด ํ•จ์ˆ˜ ํ˜ธ์ถœ์„ ํฌํ•จํ•˜๋Š” ๋“ฑ, ํ›„์† ์ฝ”๋“œ์— ์˜ํ–ฅ์„ ๋ฏธ์น˜๋Š” ์ƒํƒœ ๋ณ€ํ™”๋ฅผ ์•ผ๊ธฐํ•œ๋‹ค๋ฉด ์กฐ๊ฑด์‹์˜ ์ž๋™ํ™”๋œ
์‹คํ–‰ ์ƒ๋žต์ด ์ฐพ๊ธฐ ์–ด๋ ค์šด ๋ฒ„๊ทธ๋ฅผ ๋งŒ๋“ค์–ด ๋‚ผ ์ˆ˜๋„ ์žˆ์Œ.
WHILE ๋ฃจํ”„
โ€ข while ๋ฃจํ”„๋Š” ์ฃผ์–ด์ง„ ํ‘œํ˜„์‹์ด ์ฐธ์ธ ๋™์•ˆ while ๋ธ”๋ก์˜ ์ฝ”๋“œ๊ฐ€ ์‹คํ–‰๋˜๊ฒŒ ํ•จ.
โ€ข

int i = 0;
while (i < 5) {
std::cout << โ€œ์ด๊ฑด ์‰ฌ์šด๋ฐโ€ << std::endl;
i++;
}

โ€ข break ํ‚ค์›Œ๋“œ๋ฅผ ์ด์šฉํ•˜๋ฉด ๋ฃจํ”„์—์„œ ๋ฐ”๋กœ ๋ฒ—์–ด๋‚˜ while ๋ธ”๋ก ์ดํ›„์˜ ์ฝ”๋“œ๋กœ ์—ฐ์†ํ•ด์„œ ์‹คํ–‰ํ•˜๊ฒŒ ํ•จ.
โ€ข continue ํ‚ค์›Œ๋“œ๋Š” ๋ฃจํ”„ ๋ธ”๋ก ๋‚ด์—์„œ ํ•ด๋‹น ํ‚ค์›Œ๋“œ ์•„๋ž˜์ชฝ ์ฝ”๋“œ๋ฅผ ์‹คํ–‰ํ•˜์ง€ ์•Š๊ณ  ๋ฐ”๋กœ ๋ฃจํ”„์˜ ์ฒ˜์Œ์œผ๋กœ
๋Œ์•„๊ฐ€์„œ ๋‹ค์‹œ ์‹คํ–‰ํ•˜๊ฒŒ ํ•จ.
DO/WHILE ๋ฃจํ”„

โ€ข do / while ๋ฃจํ”„๋Š” while ๋ฃจํ”„์˜ ํŒŒ์ƒํ˜•์œผ๋กœ while ๋ฃจํ”„์™€ ๋น„์Šทํ•จ.
โ€ข

๋‹จ, while ๋ธ”๋ก์˜ ์ฝ”๋“œ๊ฐ€ ์ฒ˜์Œ ํ•œ ๋ฒˆ์€ ๋ฌด์กฐ๊ฑด ์‹คํ–‰๋˜๊ณ  ๋‚˜์„œ ๋ฃจํ”„ ๋ฐ˜๋ณต ์—ฌ๋ถ€๋ฅผ ์ฒดํฌํ•œ๋‹ค๋Š” ์ ์ด ๋‹ค๋ฆ„.

โ€ข

์ฒซ ๋ฒˆ์งธ ์‹คํ–‰์ด ๋ฌด์กฐ๊ฑด ๋ฐœ์ƒํ•ด์•ผ ํ•˜๋Š” ์ƒํ™ฉ์—์„œ ์ฒซ ๋ฒˆ์งธ ๋น„๊ต๋ฌธ์˜ ๋ถˆํ•„์š”ํ•œ ์‹คํ–‰์„ ์ œ๊ฑฐํ•ด์ฃผ๋Š” ํšจ๊ณผ.

โ€ข

int i = 100;
do {
std::cout << โ€œ์ด๊ฑด ์‰ฌ์šด๋ฐโ€ << std::endl;
i++;
} while (i < 5);
FOR ๋ฃจํ”„

โ€ข for ๋ฃจํ”„์™€ while ๋ฃจํ”„๋Š” ์ƒํ˜ธ ๋ณ€ํ™˜์ด ๊ฐ€๋Šฅ.
โ€ข for ๋ฃจํ”„๋Š” ์‹œ์ž‘ ์กฐ๊ฑด, ์ค‘๋‹จ ์กฐ๊ฑด ๊ทธ๋ฆฌ๊ณ  ๋ฃจํ”„ ๋งˆ์ง€๋ง‰์— ๋ฐ˜๋ณต ์ˆ˜ํ–‰ํ•  ์ฝ”๋“œ๋ฅผ ์ง€์ •ํ•  ์ˆ˜ ์žˆ์Œ.
โ€ข

for (int i = 0; i < 5; i++) {
std::cout << โ€œ์ด๊ฑด ์‰ฌ์šด๋ฐโ€ << std::endl;
}

โ€ข while ๋ฃจํ”„์™€ ํ•˜๋Š” ์ผ์€ ๊ฐ™์ง€๋งŒ ์‹œ์ž‘ ์กฐ๊ฑด, ์ค‘๋‹จ ์กฐ๊ฑด, ๋ฃจํ”„ ๋ฐ˜๋ณต ์ฝ”๋“œ๊ฐ€ ํ•œ ์ค„์— ์ผ๋ชฉ์š”์—ฐํ•˜๊ฒŒ
ํ‘œ์‹œ๋˜๋ฏ€๋กœ ์–ด๋–ค ๊ฐœ๋ฐœ์ž์—๊ฒŒ๋Š” ๊ฐ€๋…์„ฑ์ด ํ›จ์”ฌ ๋” ์ข‹์„ ์ˆ˜ ์žˆ์Œ.
[C++ 11] ๊ตฌ๊ฐ„ ์ง€์ • ๋ฃจํ”„

โ€ข ๊ตฌ๊ฐ„ ์ง€์ • for ๋ฃจํ”„๋Š” C++ 11์—์„œ ์ƒˆ๋กœ ๋„์ž…๋œ ๋ฐ˜๋ณต๋ฌธ.
โ€ข ๋ฆฌ์ŠคํŠธ๋ฅผ ์ˆœํšŒํ•˜๋ฉฐ ์ž‘์—…ํ•  ๋•Œ ํŽธ๋ฆฌํ•จ.
โ€ข ๋ฐฐ์—ด๊ณผ ์ดˆ๊ธฐํ™” ๋ฆฌ์ŠคํŠธ, ๋ฐ˜๋ณต์ž๋ฅผ ๋ฆฌํ„ดํ•˜๋Š” begin() / end() ํ•จ์ˆ˜๋ฅผ ๋ฉค๋ฒ„๋กœ ๊ฐ€์ง„ ๋ฐ์ดํ„ฐ ํƒ€์ž…์ด ์ฃผ ๋Œ€์ƒ.
โ€ข int arr[] = {1, 2, 3, 4};
for (auto& i : arr) {
i += 2;
}
๋ฐฐ์—ด
โ€ข ๋ฐฐ์—ด์€ ๊ฐ™์€ ๋ฐ์ดํ„ฐ ํƒ€์ž…์˜ ๊ฐ’๋“ค์„ ์ผ๋ ฌ๋กœ ๋‚˜์—ดํ•œ ๊ฒƒ.
โ€ข C++์—์„œ ๋ฐฐ์—ด์„ ์„ ์–ธํ•  ๋•Œ๋Š” ๋ฐฐ์—ด์˜ ํฌ๊ธฐ๋ฅผ ๋ช…์‹œ์ ์œผ๋กœ ์„ค์ •ํ•ด์•ผ ํ•จ.
โ€ข ๋ณ€์ˆ˜๋ฅผ ์ด์šฉํ•˜๋”๋ผ๋„ const ๋ณ€์ˆ˜์—ฌ์•ผ ํ•จ.
โ€ข C++ 11์—์„œ๋Š” ์ด๋Ÿฌํ•œ ์กฐ๊ฑด์„ ์•ฝ๊ฐ„ ์™„ํ™”ํ•˜์—ฌ ์ƒ์ˆ˜ ํ‘œํ˜„์‹(constexpr)์„ ๋ฐฐ์—ด ํฌ๊ธฐ ์„ ์–ธ์— ์ด์šฉํ•  ์ˆ˜ ์žˆ์Œ.
โ€ข int myArray[10];
for (int i = 0; i < 10; i++) { myArray[i] = 0; }
โ€ข int myArray[10] = {0};
โ€ข C++ ๋ฐฐ์—ด์˜ ์ฒซ ๋ฒˆ์งธ ํ•ญ๋ชฉ์€ ์–ธ์ œ๋‚˜ 0๋ฒˆ์งธ์— ์œ„์น˜.
โ€ข ๋งˆ์ง€๋ง‰ ํ•ญ๋ชฉ์˜ ์œ„์น˜๋„ ๋ฐฐ์—ด ํฌ๊ธฐ์˜ โ€“ 1์ž„์— ์ฃผ์˜ํ•ด์•ผ ํ•จ.
[C++ 11] STD::ARRAY

โ€ข C++ 11์—์„œ๋Š” std::array๋ผ๋Š” ์ƒˆ๋กœ์šด ํ˜•ํƒœ์˜ ์ปจํ…Œ์ด๋„ˆ๋ฅผ ๋„์ž….
โ€ข <array> ํ—ค๋”์— ์ •์˜๋˜์–ด ์žˆ์Œ.
โ€ข std::array๋Š” C์–ธ์–ด ๋ฐฐ์—ด์„ ๋Œ€์ฒดํ•˜๋Š” ์•ˆ์ „ํ•œ(๋ฒ”์œ„๋ฅผ ๋ฒ—์–ด๋‚œ ์ž˜๋ชป๋œ ๋ฉ”๋ชจ๋ฆฌ ์ž‘์—…์˜ ์œ„ํ—˜์ด ์—†๋Š”) ๋ฐฐ์—ด ํƒ€์ž….
โ€ข std::array๋Š” std::vector์™€ ๋‹ฌ๋ฆฌ ํฌ๊ธฐ๊ฐ€ ๊ณ ์ •๋˜์–ด ์žˆ์–ด ์ƒˆ๋กœ ํ•ญ๋ชฉ์„ ์ถ”๊ฐ€ํ•˜๊ฑฐ๋‚˜ ์‚ญ์ œํ•  ์ˆ˜ ์—†์ง€๋งŒ
์˜ค๋ฒ„ํ—ค๋“œ๊ฐ€ ์ ์€ ์žฅ์ .
โ€ข ๋ฐฐ์—ด์˜ ํฌ๊ธฐ๋ฅผ ํ•ญ์ƒ ์ •ํ™•ํ•˜๊ฒŒ ์•Œ ์ˆ˜ ์žˆ๊ณ , ํฌ์ธํ„ฐ๊ฐ€ ์ž๋™์œผ๋กœ ์ž˜๋ชป ํƒ€์ž… ์บ์ŠคํŒ…๋˜๋Š” ๊ฒƒ๋„ ํ”ผํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ
C++ STL์˜ ๋ฐ˜๋ณต์ž๋ฅผ ํ™œ์šฉํ•˜์—ฌ ํ•ญ๋ชฉ์„ ์ˆœํšŒํ•˜๊ฑฐ๋‚˜ STL ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ์ด์šฉํ•  ์ˆ˜๋„ ์žˆ์Œ.
[C++ 11] STD::ARRAY
โ€ข #include <iostream>
#include <array>
using namespace std;
int main()
{
array<int, 3> arr = {9, 8, 7};
cout << โ€œArray size = โ€œ << arr.size() << endl;
for (auto i : arr) { cout << i << endl; }
return 0;
}
ํ•จ์ˆ˜
โ€ข ํ”„๋กœ๊ทธ๋žจ์˜ ํฌ๊ธฐ๊ฐ€ ์ปค์ง€๋ฉด main() ํ•จ์ˆ˜์— ๋ชจ๋“  ์ฝ”๋“œ๋ฅผ ๋‹ด์„ ์ˆ˜ ์—†์Œ.
โ€ข

ํšจ๊ณผ์ ์œผ๋กœ ๊ด€๋ฆฌํ•˜๋ ค๋ฉด ์ดํ•ดํ•˜๊ธฐ ์‰ฌ์šด ์˜๋ฏธ ๋‹จ์œ„๋กœ ์ชผ๊ฐœ์–ด ํ•จ์ˆ˜๋“ค๋กœ ์ •๋ฆฌํ•ด์•ผ ํ•จ.

โ€ข ๋‹ค๋ฅธ ์ฝ”๋“œ์—์„œ ํ•จ์ˆ˜๋ฅผ ์ด์šฉํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” ํ•จ์ˆ˜๋ฅผ ์„ ์–ธํ•ด์•ผ ํ•จ.
โ€ข

ํ•จ์ˆ˜๊ฐ€ ํŠน์ • ์†Œ์Šค ํŒŒ์ผ ์•ˆ์—์„œ๋งŒ ์ด์šฉ๋œ๋‹ค๋ฉด ๋ณดํ†ต ๊ทธ ํŒŒ์ผ ์•ˆ์—์„œ ์„ ์–ธ๊ณผ ์ •์˜๋ฅผ ๋ชจ๋‘ ํ•˜๊ฒŒ ๋จ.

โ€ข

๋‹ค๋ฅธ ๋ชจ๋“ˆ์˜ ์†Œ์Šค ํŒŒ์ผ์—์„œ ์ด์šฉ๋œ๋‹ค๋ฉด ํ•จ์ˆ˜ ์„ ์–ธ์€ ํ—ค๋” ํŒŒ์ผ์— ์œ„์น˜์‹œํ‚ค๊ณ  ํ•จ์ˆ˜ ์ •์˜๋Š” ์†Œ์Šค ํŒŒ์ผ์— ๋‘๊ฒŒ ๋จ.

โ€ข ํ•จ์ˆ˜ ์„ ์–ธ์˜ ์˜ˆ : void myFunction(int i, char c);
โ€ข

๋ฆฌํ„ด ํƒ€์ž…์ด void์ด๋ฏ€๋กœ ํ˜ธ์ถœ์ž์—๊ฒŒ ์•„๋ฌด๋Ÿฐ ๊ฒฐ๊ณผ๋„ ๋Œ๋ ค์ฃผ์ง€ ์•Š์Œ.

โ€ข

ํ•จ์ˆ˜ ํŒŒ๋ผ๋ฏธํ„ฐ๋กœ int์™€ char๊ฐ€ ์„ ์–ธ๋˜์–ด ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ํ•จ์ˆ˜๋ฅผ ํ˜ธ์ถœํ•  ๋•Œ๋Š” ๋‘ ๊ฐ’์„ ๊ผญ ์ž…๋ ฅํ•ด์•ผ ํ•จ.
ํ•จ์ˆ˜
โ€ข ํ•จ์ˆ˜ ์„ ์–ธ๋ถ€์™€ ํ•จ์ˆ˜ ์ •์˜๋ถ€๊ฐ€ ๊ฐ™์ง€ ์•Š์œผ๋ฉด ํ•ด๋‹น ํ•จ์ˆ˜๋ฅผ ์ฐพ์ง€ ๋ชปํ•˜์—ฌ ์ปดํŒŒ์ผ๋Ÿฌ์˜ ๋งํฌ ๋‹จ๊ณ„์—์„œ ์—๋Ÿฌ ๋ฐœ์ƒ.
โ€ข void myFunction(int i, char c)
{
std::cout << โ€œthe value of i is โ€œ << i << std::endl;
std::cout << โ€œthe value of c is โ€œ << c << std::endl;
}
โ€ข ์œ„ ํ•จ์ˆ˜๋ฅผ ํ˜ธ์ถœํ•  ๋•Œ๋Š” int์™€ char ํƒ€์ž…์˜ ๋‘ ํŒŒ๋ผ๋ฏธํ„ฐ๋ฅผ ์ž…๋ ฅํ•จ.
โ€ข

myFunction(8, โ€˜aโ€™);

โ€ข

myFunction(someInt, โ€˜bโ€™);

โ€ข

myFunction(5, someChar);
ํ•จ์ˆ˜
โ€ข ํ˜ธ์ถœ์ž์—๊ฒŒ ๋ฆฌํ„ด๊ฐ’์„ ๋„˜๊ฒจ ์ค„ ๋•Œ๋Š” ๋ฆฌํ„ดํ•  ๋ฐ์ดํ„ฐ ํƒ€์ž…์„ ์„ ์–ธํ•ด ์ฃผ์–ด์•ผ ํ•จ.
โ€ข

int addNumbers(int number1, int number2);
int addNumbers(int number1, int number2)
{
int result = number1 + number2;
return result;
}

โ€ข C++ 11์—์„œ๋Š” ์ž๋™์œผ๋กœ ํ•จ์ˆ˜ ์ด๋ฆ„์„ ๋‹ด๊ณ  ์žˆ๋Š” __func__ ๋ณ€์ˆ˜๊ฐ€ ํ•จ์ˆ˜์˜ ๋กœ์ปฌ ๋ณ€์ˆ˜๋กœ์จ ์ •์˜๋จ.
โ€ข

static const char __func__[] = โ€œfunction-nameโ€;

โ€ข

std::cout << โ€œEntering Function โ€œ << __func__ << std::endl;
์Šคํƒ๊ณผ ํž™
โ€ข C++ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์ด ์‚ฌ์šฉํ•˜๋Š” ๋ฉ”๋ชจ๋ฆฌ๋Š” ์Šคํƒ(Stack)๊ณผ ํž™(Heap) ๋‘ ๊ฐ€์ง€๋กœ ๋‚˜๋ˆ„์–ด์ง.
โ€ข

๋งŒ์•ฝ ํ˜„์žฌ ์‹คํ–‰ ์ค‘์ธ ํ•จ์ˆ˜ foo()๊ฐ€ ๋˜ ๋‹ค๋ฅธ ํ•จ์ˆ˜ bar()๋ฅผ ํ˜ธ์ถœํ•œ๋‹ค๋ฉด ์ƒˆ๋กœ์šด ์Šคํƒ ํ”„๋ ˆ์ž„์ด ์ƒ์„ฑ๋˜๊ณ  bar()
ํ•จ์ˆ˜๋ฅผ ํ˜ธ์ถœํ•  ๋•Œ ๋„˜๊ฒจ์ง„ ํŒŒ๋ผ๋ฏธํ„ฐ๋“ค์ด foo()์˜ ์Šคํƒ ํ”„๋ ˆ์ž„์—์„œ ๋ณต์ œ๋˜์–ด ์ƒˆ๋กœ ์ƒ์„ฑ๋œ bar()์˜ ์Šคํƒ ํ”„๋ ˆ์ž„์—
์˜ฎ๊ฒจ์ง.

โ€ข

์Šคํƒ ํ”„๋ ˆ์ž„์€ ๊ฐ ํ•จ์ˆ˜ ๊ฐ„ ๋ฉ”๋ชจ๋ฆฌ ๊ณต๊ฐ„์„ ๊ฒฉ๋ฆฌ์‹œํ‚ค๋Š” ์ค‘์š”ํ•œ ์—ญํ• ์„ ํ•จ.
โ€ข
โ€ข

โ€ข

์˜ˆ๋ฅผ ๋“ค์–ด foo() ํ•จ์ˆ˜์˜ ๋กœ์ปฌ ๋ณ€์ˆ˜๋“ค์€ bar() ํ•จ์ˆ˜๊ฐ€ ํ˜ธ์ถœ๋˜๋Š” ๋™์•ˆ ๋ฐ”๋€Œ์ง€ ์•Š์Œ(๋‹จ, ๋ช…์‹œ์ ์œผ๋กœ bar() ํ•จ์ˆ˜์— ํ•ด๋‹น ๋ณ€์ˆ˜์˜
๋ฉ”๋ชจ๋ฆฌ ์œ„์น˜๋ฅผ ๋„˜๊ฒจ์ฃผ๋Š” ๊ฒฝ์šฐ๋Š” ์˜ˆ์™ธ).
๊ทธ๋ฆฌ๊ณ  bar() ํ•จ์ˆ˜์˜ ์‹คํ–‰์ด ๋๋‚˜๊ณ  ํ•จ์ˆ˜๊ฐ€ ๋ฆฌํ„ดํ•˜๋ฉด bar() ํ•จ์ˆ˜์˜ ๋กœ์ปฌ ๋ณ€์ˆ˜๋“ค์€ bar()์˜ ์Šคํƒ ํ”„๋ ˆ์ž„๊ณผ ํ•จ๊ป˜ ์‚ฌ๋ผ์ง€๊ธฐ
๋•Œ๋ฌธ์— ๋”๋Š” ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ์ฐจ์ง€ํ•˜์ง€ ์•Š์Œ.

ํž™ ๋ฉ”๋ชจ๋ฆฌ๋Š” ํ˜„์žฌ ์‹คํ–‰ ์ค‘์ธ ํ•จ์ˆ˜๋‚˜ ์Šคํƒ ํ”„๋ ˆ์ž„๊ณผ๋Š” ์™„์ „ํžˆ ๋…๋ฆฝ์ ์ธ ๋ฉ”๋ชจ๋ฆฌ ์˜์—ญ.
โ€ข

ํ•จ์ˆ˜์˜ ํ˜ธ์ถœ๊ณผ ๋ฆฌํ„ด์— ๊ด€๊ณ„์—†์ด ํ•ญ์ƒ ์กด์žฌํ•ด์•ผ ํ•˜๋Š” ๋ณ€์ˆ˜๋ผ๋ฉด ํž™์— ์œ„์น˜์‹œํ‚ค๋ฉด ๋จ.
๋™์  ํ• ๋‹น ๋ฐฐ์—ด

โ€ข ์Šคํƒ์€ ๋™์ž‘ ๋ฐฉ์‹ ๋•Œ๋ฌธ์— ์ปดํŒŒ์ผ ์‹œ์ ์— ๊ฐ ์Šคํƒ ํ”„๋ ˆ์ž„์˜ ํฌ๊ธฐ๊ฐ€ ๊ฒฐ์ •๋˜์–ด์•ผ ํ•จ.
โ€ข

์Šคํƒ ํ”„๋ ˆ์ž„์˜ ํฌ๊ธฐ๊ฐ€ ์‚ฌ์ „์— ๊ฒฐ์ •๋˜๊ธฐ ๋•Œ๋ฌธ์— ๊ฐ€๋ณ€ ํฌ๊ธฐ์˜ ๋ฐฐ์—ด์„ ํ•จ์ˆ˜์˜ ๋กœ์ปฌ ๋ณ€์ˆ˜๋กœ ์„ ์–ธํ•  ์ˆ˜ ์—†์Œ.

โ€ข

int arraySize = 8;
int myVariableSizedArray[arraySize]; // ์ปดํŒŒ์ผ ์—๋Ÿฌ ๋ฐœ์ƒ
โ€ข

๋กœ์ปฌ ๋ณ€์ˆ˜๋Š” ๋ชจ๋‘ ์Šคํƒ์— ๋“ค์–ด๊ฐ€๊ธฐ ๋•Œ๋ฌธ์— ์ •ํ™•ํ•œ ํฌ๊ธฐ๋ฅผ ์ปดํŒŒ์ผ๋Ÿฌ๊ฐ€ ์•Œ ์ˆ˜ ์žˆ์–ด์•ผ ํ•จ.

โ€ข

๋ฐฐ์—ด์˜ ํฌ๊ธฐ๋ฅผ ์‹คํ–‰ ์‹œ์ ์— ๋™์ ์œผ๋กœ ๊ฒฐ์ •ํ•ด์•ผ ํ•œ๋‹ค๋ฉด ๋™์  ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ์ด์šฉํ•ด ์Šคํƒ ๋Œ€์‹  ํž™์— ๋ฐฐ์—ด์„ ์œ„์น˜์‹œํ‚ด.
๋™์  ํ• ๋‹น ๋ฐฐ์—ด
โ€ข ๋™์  ๋ฐฐ์—ด์„ ํ• ๋‹นํ•  ๋•Œ๋Š” ํฌ์ธํ„ฐ ๋ณ€์ˆ˜๋ฅผ ์„ ์–ธ.
โ€ข

int* myVariableSizedArray;
โ€ข

int ํ‚ค์›Œ๋“œ ๋’ค์— ๋ถ™์€ * ํ‘œ์‹œ๋Š” ํ•ด๋‹น ๋ณ€์ˆ˜๊ฐ€ int ํƒ€์ž… ๋ฐ์ดํ„ฐ์— ๋Œ€ํ•œ ํž™ ๋ฉ”๋ชจ๋ฆฌ ์ฃผ์†Œ ๊ฐ’์ž„์„ ๋‚˜ํƒ€๋ƒ„.

โ€ข

ํฌ์ธํ„ฐ๋Š” ํ• ๋‹น๋œ ํž™ ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ๊ฐ€๋ฆฌํ‚ค๋Š” ํ™”์‚ดํ‘œ๋กœ ์ดํ•ดํ•  ์ˆ˜ ์žˆ์Œ.

โ€ข

ํฌ์ธํ„ฐ๋ฅผ ์ดˆ๊ธฐํ™”ํ•˜๋ ค๋ฉด ๋‹ค์Œ๊ณผ ๊ฐ™์ด new ๋ช…๋ น์„ ์ด์šฉํ•จ.
โ€ข myVariableSizedArray = new int[arraySize];

โ€ข

new ๋ช…๋ น์€ ํŒŒ๋ผ๋ฏธํ„ฐ arraySize๋งŒํผ ํž™ ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ํ™•๋ณดํ•˜์—ฌ ๊ทธ ์ฃผ์†Œ ๊ฐ’์„ ํฌ์ธํ„ฐ ๋ณ€์ˆ˜์— ๋Œ€์ž…ํ•ด์คŒ.

โ€ข

๋™์ ์œผ๋กœ ํ• ๋‹น๋œ ๋ฐฐ์—ด์„ ๋”๋Š” ์‚ฌ์šฉํ•˜์ง€ ์•Š๋Š”๋‹ค๋ฉด ๋ช…์‹œ์ ์œผ๋กœ ํž™ ๋ฉ”๋ชจ๋ฆฌ์—์„œ ํ•ด์ œํ•ด์•ผ ํ•จ.
โ€ข delete [] myVariableSizedArray;
๋™์  ํ• ๋‹น ๋ฐฐ์—ด
โ€ข C++์˜ new์™€ delete ๋ช…๋ น์€ C์—์„œ์˜ malloc(), free()์™€ ์œ ์‚ฌ.
โ€ข new, new []์™€ delete, delete []๋Š” ๊ฐ๊ฐ ์ง์„ ๋งž์ถฐ์„œ ์‚ฌ์šฉํ•ด์•ผ ํ•จ.
โ€ข

new []๋ฅผ ํ–ˆ๋‹ค๋ฉด ๋ฐ˜๋“œ์‹œ delete []๋ฅผ ์ˆ˜ํ–‰ํ•ด์•ผ ๋ฉ”๋ชจ๋ฆฌ ๋ฆญ(Memory Leak)์„ ๋ง‰์„ ์ˆ˜ ์žˆ์Œ.

โ€ข ๋ฉ”๋ชจ๋ฆฌ ๋ฌธ์ œ๋ฅผ ํ”ผํ•˜๊ณ  ์‹ถ๋‹ค๋ฉด ์Šค๋งˆํŠธ ํฌ์ธํ„ฐ๋ฅผ ์‚ฌ์šฉ.
โ€ข

์Šค๋งˆํŠธ ํฌ์ธํ„ฐ๋Š” ํ•ด๋‹น ๊ฐ์ฒด์— ๋Œ€ํ•œ ์ฐธ์กฐ ์Šค์ฝ”ํ”„๊ฐ€ ๋ฒ—์–ด๋‚˜๋ฉด ์ž๋™์œผ๋กœ ๋ฉ”๋ชจ๋ฆฌ ํ•ด์ œ๊ฐ€ ์ˆ˜ํ–‰๋จ.

โ€ข

<memory> ํ—ค๋”์— ์ •์˜๋œ C++ 11์˜ unique_ptr์„ ์‚ฌ์šฉ.
โ€ข

unique_ptr<int[]> myVariableSizedArray(new int[arraySize]);

โ€ข

unique_ptr๋Š” ํ•ด๋‹น ๋ฉ”๋ชจ๋ฆฌ๊ฐ€ ์Šค์ฝ”ํ”„์—์„œ ๋ฒ—์–ด๋‚  ๋•Œ ์ž๋™์œผ๋กœ ๋ฉ”๋ชจ๋ฆฌ ํ•ด์ œ๋ฅผ ์ˆ˜ํ–‰.
ํฌ์ธํ„ฐ์˜ ์ด์šฉ
โ€ข ์–ด๋– ํ•œ ๋ณ€์ˆ˜๋“  ํž™ ๋ฉ”๋ชจ๋ฆฌ์— ํ• ๋‹นํ•  ์ˆ˜ ์žˆ์Œ.
โ€ข

int* myIntegerPointer = new int;
โ€ข

์—ฌ๊ธฐ์„œ ํฌ์ธํ„ฐ๋Š” ์ •์ˆ˜ ๋ณ€์ˆ˜ ๋‹จ ํ•˜๋‚˜๊ฐ€ ์œ„์น˜ํ•œ ์ฃผ์†Œ๋ฅผ ๊ฐ€๋ฆฌํ‚ด.

โ€ข

๋ณ€์ˆซ๊ฐ’์— ์ ‘๊ทผํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” ํฌ์ธํ„ฐ๋ฅผ ์—ญ์ฐธ์กฐ(Dereference)ํ•ด์•ผ ํ•จ.
โ€ข *myIntegerPointer = 8;
โ€ข ํฌ์ธํ„ฐ ์ž์ฒด๋Š” ๋ฐ”๋€Œ์ง€ ์•Š๊ณ  ๊ทธ ํฌ์ธํ„ฐ๊ฐ€ ๊ฐ€๋ฆฌํ‚ค๋Š” ๋ฉ”๋ชจ๋ฆฌ์˜ ๊ฐ’์ด ๋ฐ”๋€Œ๋Š” ๊ฒƒ.

โ€ข ํฌ์ธํ„ฐ๊ฐ€ ํ•ญ์ƒ ํž™ ๋ฉ”๋ชจ๋ฆฌ๋งŒ ๊ฐ€๋ฆฌํ‚ค๋Š” ๊ฒƒ์€ ์•„๋‹˜.
โ€ข

์Šคํƒ์„ ๊ฐ€๋ฆฌํ‚ฌ ์ˆ˜๋„ ์žˆ๊ณ  ์‹ฌ์ง€์–ด ๋˜ ๋‹ค๋ฅธ ํฌ์ธํ„ฐ๋ฅผ ๊ฐ€๋ฆฌํ‚ฌ ์ˆ˜๋„ ์žˆ์Œ.

โ€ข

๋ณ€์ˆ˜๋กœ๋ถ€ํ„ฐ ํฌ์ธํ„ฐ๋ฅผ ์–ป์„ ๋•Œ๋Š” ์ฃผ์†Œ ์ฐธ์กฐ ์—ฐ์‚ฐ์ž &๋ฅผ ์ด์šฉ.
โ€ข

int i = 9;
int* myIntegerPointer = &i; // ์ˆซ์ž 8์„ ๊ฐ’์œผ๋กœ ๊ฐ€์ง„ ๋ณ€์ˆ˜์˜ ํฌ์ธํ„ฐ ๋ณ€์ˆ˜
ํฌ์ธํ„ฐ์˜ ์ด์šฉ

โ€ข ํฌ์ธํ„ฐ๋กœ ๊ตฌ์กฐ์ฒด๋ฅผ ์ฐธ์กฐํ•  ๋•Œ๋Š” ํŠน๋ณ„ํ•œ ๋ฌธ๋ฒ•์„ ์‚ฌ์šฉ.
โ€ข

๊ฐ’์— ์ ‘๊ทผํ•˜๊ธฐ ์œ„ํ•ด ์ƒˆ ์—ญ์ฐธ์กฐ ์—ฐ์‚ฐ์ž *๋ฅผ ํฌ์ธํ„ฐ์— ๋ถ™์ด๊ณ , ์ด๋ ‡๊ฒŒ ์—ญ์ฐธ์กฐ๋œ ๋ณ€์ˆ˜์— .์„ ๋ถ™์—ฌ์„œ ๊ตฌ์กฐ์ฒด ๋‚ด ๊ฐ
ํ•„๋“œ๋ฅผ ์„ ํƒ.
โ€ข

โ€ข

EmployeeT* anEmployee = getEmployee();
cout << (*anEmployee).salary << endl;

๊ตฌ์กฐ์ฒด ์—ญ์ฐธ์กฐ ์—ฐ์‚ฐ์ž ->๋ฅผ ์ด์šฉํ•˜๋ฉด ์—ญ์ฐธ์กฐ์™€ ํ•„๋“œ ์ ‘๊ทผ์„ ํ•œ ๋ฒˆ์— ํ•  ์ˆ˜ ์žˆ์Œ.
โ€ข

EmployeeT* anEmployee = getEmployee();
cout << anEmployee->salary << endl;
ํฌ์ธํ„ฐ์˜ ์ด์šฉ

โ€ข ๊ฐ’์— ์˜ํ•œ ์ „๋‹ฌ(Passing by Value) : ํ•จ์ˆ˜๋ฅผ ํ˜ธ์ถœํ•˜๋ฉด์„œ ํŒŒ๋ผ๋ฏธํ„ฐ ์ „๋‹ฌ์„ ์œ„ํ•ด ๋ณ€์ˆ˜๋ฅผ ์ธ์ž๋กœ ์ด์šฉํ•  ๋•Œ
ํ•ด๋‹น ๋ณ€์ˆ˜์˜ ์ฃผ์†Œ๊ฐ€ ์•„๋‹Œ ๊ฐ’์„ ๋„˜๊ธฐ๊ฒŒ ๋จ.
โ€ข

์˜ˆ๋ฅผ ๋“ค์–ด ์–ด๋–ค ํ•จ์ˆ˜๊ฐ€ ์ •์ˆ˜ ๊ฐ’์„ ํŒŒ๋ผ๋ฏธํ„ฐ๋กœ ๋ฐ›๊ณ , ํ•จ์ˆ˜ ํ˜ธ์ถœ ์‹œ ์ •์ˆ˜ ๋ณ€์ˆ˜๋ฅผ ์ธ์ž๋กœ ๋„˜๊ฒผ๋‹ค๋ฉด ํ•ด๋‹น ๋ณ€์ˆ˜์˜ ๊ฐ’์„
๋ณต์‚ฌํ•˜์—ฌ ํ•จ์ˆ˜ ์Šคํƒ ํ”„๋ ˆ์ž„ ์•ˆ์˜ ํŒŒ๋ผ๋ฏธํ„ฐ ์˜์—ญ์— ์œ„์น˜์‹œํ‚ด.

โ€ข ์ฐธ์กฐ์— ์˜ํ•œ ์ „๋‹ฌ(Passing by Reference) : ํฌ์ธํ„ฐ๋ฅผ ์ธ์ž๋กœ ์ „๋‹ฌํ•˜๋ฉด ์Šคํƒ ํ”„๋ ˆ์ž„ ์•ˆ์— ๋ณต์‚ฌ๋˜์–ด
์ €์žฅ๋˜๋Š” ๊ฒƒ์ด ๋ณ€์ˆ˜์˜ ๊ฐ’์ด ์•„๋‹Œ ๋ณ€์ˆ˜์˜ ์ฃผ์†Œ๊ฐ€ ๋˜๊ธฐ ๋•Œ๋ฌธ์— ๊ทธ ์ฃผ์†Œ๋ฅผ ์—ญ์ฐธ์กฐ ํ•จ์œผ๋กœ์„œ ์Šคํƒ ํ”„๋ ˆ์ž„ ๋ฐ–์—
์žˆ๋Š” ๋ณ€์ˆ˜์˜ ๊ฐ’์„ ๋ณ€๊ฒฝํ•˜๋Š” ๊ฒƒ์ด ๊ฐ€๋Šฅ.
โ€ข

C++์—์„œ๋Š” ์ฐธ์กฐํ˜• ๋ณ€์ˆ˜๋ผ๋Š” ๋” ์ข‹์€ ๋ฐฉ์‹์„ ์ง€์›ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ํฌ์ธํ„ฐ๋ฅผ ํ†ตํ•œ ์šฐํšŒ์ ์ธ ๋ฐฉ๋ฒ•์„ ์‚ฌ์šฉํ•˜์ง€ ์•Š์•„๋„ ๋จ.
C ์–ธ์–ด์˜ ๋ฌธ์ž์—ด

โ€ข C++์—์„œ ๋ฌธ์ž์—ด์„ ๋‹ค๋ฃจ๋Š” ๋‘ ๊ฐ€์ง€ ๋ฐฉ๋ฒ•.
โ€ข

1. ๊ธฐ์กด C ์–ธ์–ด์—์„œ์™€ ๊ฐ™์ด ๋ฌธ์ž(char)์˜ ๋ฐฐ์—ด๋กœ ์ด์šฉํ•˜๋Š” ๊ฒƒ.

โ€ข

2. C++์—์„œ ์ œ๊ณตํ•˜๋Š” string ํƒ€์ž…์„ ์ด์šฉํ•˜๋Š” ๊ฒƒ.

โ€ข โ€œHello, Worldโ€์™€ ๊ฐ™์€ ๋ฌธ์ž์—ด์€ ๋‚ด๋ถ€์ ์œผ๋กœ ๋„ ๋ฌธ์ž(Null Character) โ€˜0โ€™์ด ๋งˆ์ง€๋ง‰์— ์ถ”๊ฐ€๋œ
๋ฌธ์ž(char) ํƒ€์ž…์˜ ๋ฐฐ์—ด๋กœ ์ฒ˜๋ฆฌ๋จ.
โ€ข

char arrayString[20] = โ€œHello, Worldโ€;
const char* pointerString = โ€œHello, Worldโ€;
C++ ์–ธ์–ด์˜ ๋ฌธ์ž์—ด
โ€ข C++์—์„œ๋Š” string ํƒ€์ž…์„ ์ง€์›ํ•˜์—ฌ ํ›จ์”ฌ ๋” ์œ ์—ฐํ•˜๊ฒŒ ๋ฌธ์ž์—ด์„ ์ด์šฉํ•  ์ˆ˜ ์žˆ์Œ.
โ€ข

<string> ํ—ค๋”์— ์ •์˜๋˜์–ด ์žˆ๊ณ  ๊ธฐ๋ณธ ํƒ€์ž…์œผ๋กœ์จ ์ด์šฉ๋˜๋ฉฐ std ๋„ค์ž„์ŠคํŽ˜์ด์Šค ์•„๋ž˜์— ์ •์˜๋˜์–ด ์žˆ์Œ.

โ€ข

string myString = โ€œHello, Worldโ€;
cout << โ€œThe value of myString is โ€œ << myString << endl;

โ€ข C++ string ํƒ€์ž…์„ ์ด์šฉํ•˜๋ฉด ์ผ๋ฐ˜์ ์ธ ์—ฐ์‚ฐ์ž๋กœ ๋ฌธ์ž์—ด์„ ์กฐ์ž‘ํ•  ์ˆ˜ ์žˆ์Œ.
โ€ข

์˜ˆ๋ฅผ ๋“ค์–ด ๋ฌธ์ž์—ด์„ ํ•ฉ์น  ๋•Œ C์—์„œ๋Š” strcat() ํ•จ์ˆ˜๋ฅผ ์ด์šฉํ–ˆ์ง€๋งŒ, string ํƒ€์ž… ๋ฌธ์ž์—ด์€ + ์—ฐ์‚ฐ์ž๋ฅผ ์ด์šฉ.

โ€ข

๊ทธ๋ฆฌ๊ณ  C์—์„œ๋Š” ๋ฌธ์ž์—ด ๋น„๊ต์— ==๋ฅผ ์ด์šฉํ•˜๋ฉด ๋ฌธ์ž์—ด ์ž์ฒด๊ฐ€ ์•„๋‹Œ ์ฃผ์†Œ ๊ฐ’์„ ๋น„๊ตํ•˜๊ฒŒ ๋˜์–ด ์˜๋„ํ•œ ๊ฒฐ๊ณผ๋ฅผ ์–ป์„
์ˆ˜ ์—†์ง€๋งŒ string ํƒ€์ž… ๋ฌธ์ž๋Š” == ์—ฐ์‚ฐ์ž๋ฅผ ์ด์šฉํ•˜์—ฌ ๋ฌธ์ž์—ด ๋น„๊ต๋ฅผ ํ•  ์ˆ˜ ์žˆ์Œ.
C++ ์–ธ์–ด์˜ ๋ฌธ์ž์—ด

โ€ข string str1 = โ€œHelloโ€;
string str2 = โ€œWorldโ€;
string str3 = str1 + โ€œ โ€œ + str2;
cout << โ€œstr1 is โ€œ << str1 << endl;
cout << โ€œstr2 is โ€œ << str2 << endl;
cout << โ€œstr3 is โ€œ << str3 << endl;
if (str3 == โ€œHello Worldโ€) { cout << โ€œstr3 is what it should be.โ€ << endl; }
else { cout << โ€œHmmm . . . str3 isnโ€™t what it should be.โ€ << endl; }
์ฐธ์กฐํ˜•
โ€ข ํ•จ์ˆ˜์˜ ์ „ํ˜•์ ์ธ ํŒจํ„ด์€ 0๊ฐœ๋‚˜ 1๊ฐœ ์ด์ƒ์˜ ํŒŒ๋ผ๋ฏธํ„ฐ๋ฅผ ๋ฐ›์•„ ๊ณ„์‚ฐํ•˜๊ณ  ํ•˜๋‚˜์˜ ๊ฒฐ๊ณผ ๊ฐ’์„ ๋ฆฌํ„ดํ•˜๋Š” ๊ฒƒ.
โ€ข ํ•˜์ง€๋งŒ ๋ฆฌํ„ดํ•˜๊ณ  ์‹ถ์€ ๊ฒฐ๊ณผ ๊ฐ’์ด 2๊ฐœ ์ด์ƒ์ผ ์ˆ˜๋„ ์žˆ๊ณ  ํŒŒ๋ผ๋ฏธํ„ฐ๋กœ ๋„˜๊ฒจ์ง„ ๋ณ€์ˆ˜๋ฅผ ํ•จ์ˆ˜์—์„œ ๋ณ€๊ฒฝํ•ด์ฃผ๊ธธ
์›ํ•  ์ˆ˜๋„ ์žˆ์Œ.
โ€ข ์ด๋Ÿฐ ๊ฒฝ์šฐ C์—์„œ๋Š” ๋ณ€์ˆ˜ ๋Œ€์‹  ๋ณ€์ˆ˜์˜ ํฌ์ธํ„ฐ๋ฅผ ์ „๋‹ฌํ•˜์—ฌ ํ•ด๊ฒฐ.
โ€ข C++์—์„œ๋Š” ํฌ์ธํ„ฐ ์—†์ด๋„ ๋ช…์‹œ์ ์œผ๋กœ ์ฐธ์กฐ์— ์˜ํ•œ ์ „๋‹ฌ์„ ์ง€์›.
โ€ข

ํ•จ์ˆ˜ ํŒŒ๋ผ๋ฏธํ„ฐ์˜ ์ •์˜๋ถ€์—์„œ ๊ฐ ํŒŒ๋ผ๋ฏธํ„ฐ์˜ ๋ณ€์ˆ˜ ์ด๋ฆ„ ์•ž์— & ์—ฐ์‚ฐ์ž๋ฅผ ๋ถ™์ด๋Š” ๊ฒƒ.

โ€ข

์‚ฌ์šฉ๋ฒ•์€ ๋ณดํ†ต ๋ณ€์ˆ˜์™€ ๊ฐ™์ง€๋งŒ, ๋‚ด๋ถ€์ ์œผ๋กœ๋Š” ํ•จ์ˆ˜ ์•ˆ์—์„œ๋„ ํ•จ์ˆ˜ ํ˜ธ์ถœ ์‹œ ์‚ฌ์šฉ๋œ ๋ณ€์ˆ˜์˜ ํฌ์ธํ„ฐ๊ฐ€ ์‚ฌ์šฉ๋จ.
์ฐธ์กฐํ˜•
โ€ข void addOne(int i) { i++; } // ํŒŒ๋ผ๋ฏธํ„ฐ ๋ณ€์ˆ˜์˜ ๋ณต์ œ๋ณธ์ด๊ธฐ ๋•Œ๋ฌธ์— ์›๋ž˜ ๋ณ€์ˆ˜์—๋Š” ์•„๋ฌด๋Ÿฐ ์˜ํ–ฅ์ด ์—†์Œ
void addOne(int& i) { i++; } // ์›๋ณธ ํŒŒ๋ผ๋ฏธํ„ฐ ๋ณ€์ˆ˜์˜ ๊ฐ’์ด 1 ์ฆ๊ฐ€ํ•จ
โ€ข ์œ„์˜ ํ•จ์ˆ˜๋ฅผ ํ˜ธ์ถœํ•  ๋•Œ๋Š” ์ •์ˆ˜ ๋ณ€์ˆ˜๋ฅผ ์‚ฌ์šฉํ•˜๊ธฐ๋งŒ ํ•œ๋‹ค๋ฉด ๋ณดํ†ต ํŒŒ๋ผ๋ฏธํ„ฐ ํ•จ์ˆ˜๋“  ์ฐธ์กฐํ˜• ํŒŒ๋ผ๋ฏธํ„ฐ ํ•จ์ˆ˜๋“ 
์ฐจ์ด๊ฐ€ ์—†์Œ.
โ€ข

int myInt = 7;
addOne(myInt);

โ€ข ํŒŒ๋ผ๋ฏธํ„ฐ๊ฐ€ ๊ฐ’์œผ๋กœ ์ „๋‹ฌ๋˜๋Š” ํ•จ์ˆ˜๋Š” ์ƒ์ˆ˜ ํŒŒ๋ผ๋ฏธํ„ฐ๋ฅผ ๋„˜๊ฒจ ์ฃผ์–ด๋„ ์•„๋ฌด๋Ÿฐ ๋ฌธ์ œ๊ฐ€ ์—†์ง€๋งŒ ์ฐธ์กฐํ˜• ๋ณ€์ˆ˜๋ฅผ
๋ฐ›๋Š” ํ•จ์ˆ˜๋Š” ์ƒ์ˆ˜ ํŒŒ๋ผ๋ฏธํ„ฐ๋ฅผ ๋„˜๊ธธ ๊ฒฝ์šฐ ์ปดํŒŒ์ผ ์—๋Ÿฌ๊ฐ€ ๋ฐœ์ƒ.
โ€ข

์ด๋Ÿฌํ•œ ๋ฌธ์ œ๋Š” rvalue ์ฐธ์กฐ๋กœ ํ•ด๊ฒฐํ•  ์ˆ˜ ์žˆ์Œ.
์˜ˆ์™ธ ์ฒ˜๋ฆฌ

โ€ข C++์€ ์œ ์—ฐํ•œ ์–ธ์–ด์ด๊ธฐ๋Š” ํ•˜์ง€๋งŒ ๋”ฑํžˆ ์•ˆ์ „ํ•œ ์–ธ์–ด๋Š” ์•„๋‹˜.
โ€ข

์ž‘์„ฑํ•œ ์ฝ”๋“œ๊ฐ€ ์—‰๋šฑํ•œ ๋ฉ”๋ชจ๋ฆฌ ์˜์—ญ์„ ํ—ค์ง‘๊ฑฐ๋‚˜ 0์œผ๋กœ ๋‚˜๋ˆ„๊ธฐ๋ฅผ ์‹œ๋„ํ•ด์„œ ์ปดํŒŒ์ผ๋Ÿฌ๊ฐ€ ๊ฑธ๋Ÿฌ์ฃผ์ง€ ์•Š์Œ.

โ€ข

C++์˜ exception์€ ์ฝ”๋“œ์˜ ์•ˆ์ „์„ฑ์„ ํ•œ ๋‹จ๊ณ„ ๋†’์ด๊ธฐ ์œ„ํ•ด ์–ธ์–ด ์ฐจ์›์—์„œ ์ œ๊ณต๋˜๋Š” ๊ธฐ๋Šฅ.

โ€ข exception์—์„œ๋Š” ๋ช‡ ๊ฐ€์ง€ ์ƒˆ๋กœ์šด ์šฉ์–ด๊ฐ€ ๋„์ž…๋จ.
โ€ข

ํŠน์ • ์ฝ”๋“œ๊ฐ€ ์˜ˆ์™ธ์ ์ธ ์ƒํ™ฉ์„ ์ธ์ง€ํ•˜๋ฉด exception์„ ๋˜์ง(throw).

โ€ข

๊ทธ๋ฆฌ๊ณ  ๋˜ ๋‹ค๋ฅธ ์ฝ”๋“œ๊ฐ€ ๋˜์ ธ์ง„ exception์„ ๋ฐ›์•„์„œ(catch) ํ•„์š”ํ•œ ๋’ค์ฒ˜๋ฆฌ๋ฅผ ํ•จ.
์˜ˆ์™ธ ์ฒ˜๋ฆฌ
โ€ข #include <stdexcept>
double divideNumbers(double inNumerator, double inDenomiator)
{
if (inDenominator == 0) {
throw std::exception();
}
return inNumerator / inDenomiator;
}
โ€ข throw ๊ตฌ๋ฌธ์— ์ด๋ฅด๋ฉด ๋ฆฌํ„ด๊ฐ’๋„ ์—†์ด ํ•จ์ˆ˜์˜ ์‹คํ–‰์ด ์ฆ‰์‹œ ์ค‘๋‹จ๋จ.
โ€ข ํ˜ธ์ถœํ•œ ์ธก์—์„œ ์ด ํ•จ์ˆ˜๋ฅผ try / catch ๋ธ”๋ก์œผ๋กœ ๊ฐ์ŒŒ๋‹ค๋ฉด ๋˜์ ธ์ง„ exception์„ ๋ฐ›์•„์„œ ๋’ค์ฒ˜๋ฆฌ๋ฅผ ํ•˜๊ฒŒ ๋จ.
์˜ˆ์™ธ ์ฒ˜๋ฆฌ
โ€ข #include <iostream>
#include <stdexcept>
int main()
{
try {
std::cout << divideNumbers(2.5, 0.5) << std::endl;
std::cout << divideNumbers(2.3, 0) << std::endl;
} catch (const std::exception& exception) {
std::cout << โ€œAn exception was caught!โ€ << std::endl;
}
return 0;
}
CONST ์ƒ์ˆ˜

โ€ข C์—์„œ๋Š” ๋ฒ„์ „ ๋„˜๋ฒ„ ๊ฐ™์ด ์‹คํ–‰๋˜๋Š” ๋™์•ˆ ์ ˆ๋Œ€ ๋ณ€ํ•˜์ง€ ์•Š๋Š” ์ƒ์ˆซ๊ฐ’์— ์ด๋ฆ„์„ ๋ถ€์—ฌํ•˜์—ฌ ํ™œ์šฉํ•  ๋•Œ #define
์ „์ฒ˜๋ฆฌ ๋งคํฌ๋กœ๋ฅผ ์ด์šฉํ–ˆ์Œ.
โ€ข C++์—์„œ๋Š” #define ๋Œ€์‹  const ํ‚ค์›Œ๋“œ๋ฅผ ์ด์šฉํ•˜๋Š” ๊ฒƒ์„ ๊ถŒ์žฅ.
โ€ข const๋กœ ์„ ์–ธ๋œ ๋ณ€์ˆ˜๋Š” ์ปดํŒŒ์ผ๋Ÿฌ์— ์˜ํ•ด ๋ณ€์ˆซ๊ฐ’์ด ๋ฐ”๋€Œ์ง€ ์•Š๋„๋ก ๋ณด์ฆ๋จ.
โ€ข

const float kVersionNumber = 2.0f;
const string kProductName = โ€œSuper Hyper Net Modularโ€;
ํŒŒ๋ผ๋ฏธํ„ฐ ๋ณดํ˜ธ๋ฅผ ์œ„ํ•œ CONST

โ€ข C++์—์„œ๋Š” const๊ฐ€ ์•„๋‹Œ ๋ณ€์ˆ˜๋ฅผ const ๋ณ€์ˆ˜๋กœ ์บ์ŠคํŒ…ํ•  ์ˆ˜ ์žˆ์Œ.
โ€ข

ํŠน์ • ์ฝ”๋“œ๊ฐ€ ์‹คํ–‰๋˜๋Š” ๋™์•ˆ ํŠน์ • ๋ณ€์ˆ˜๋ฅผ ์ƒ์ˆ˜ํ™”ํ•˜๋ฉด ์˜๋„ํ•˜์ง€ ์•Š๊ฒŒ ๊ฐ’์ด ๋ฐ”๋€Œ๋Š” ์˜ค๋ฅ˜ ์ƒํ™ฉ์„ ์ปดํŒŒ์ผ ์‹œ์ ์—
์•Œ์•„๋‚ผ ์ˆ˜ ์žˆ์Œ.
โ€ข

์˜ˆ๋ฅผ ๋“ค์–ด ์—ฌ๋Ÿฌ๋ถ„์ด ์ž‘์„ฑํ•œ ํ•จ์ˆ˜๋ฅผ ๋‹ค๋ฅธ ๋™๋ฃŒ ๊ฐœ๋ฐœ์ž๊ฐ€ ์‚ฌ์šฉํ•  ๋•Œ ํ•ด๋‹น ํ•จ์ˆ˜๊ฐ€ ์ „๋‹ฌ๋œ ํŒŒ๋ผ๋ฏธํ„ฐ์˜ ๊ฐ’์„ ๋ฌด๋‹จ์œผ๋กœ ๋ณ€๊ฒฝํ•˜์ง€
์•Š๋Š”๋‹ค๋Š” ๊ฒƒ์„ ๋ณด์ฆํ•ด์•ผ ํ•œ๋‹ค๋ฉด const ๋ณ€์ˆ˜๊ฐ€ ํ•ด๊ฒฐ์ฑ…์ด ๋จ.
ํŒŒ๋ผ๋ฏธํ„ฐ ๋ณดํ˜ธ๋ฅผ ์œ„ํ•œ CONST
โ€ข void mysteryFunction(const char* myString);
int main()
{
char* myString = new char[2];
myString[0] = โ€˜aโ€™; myString[1] = โ€˜0โ€™;
mysteryFunction(myString);
return 0;
}
void mysteryFunction(const char* myString)
{
myString[0] = โ€˜bโ€™; // const ์œ„๋ฐ˜์œผ๋กœ ์ปดํŒŒ์ผ ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ•จ
}
โ€ข mysteryFunction() ํ•จ์ˆ˜๋ฅผ ํ˜ธ์ถœํ•˜๋ฉด์„œ char* ๋ณ€์ˆ˜๋ฅผ const char* ํƒ€์ž…์œผ๋กœ ์ž๋™์œผ๋กœ ์บ์ŠคํŒ….
์ฐธ์กฐํ˜• CONST

โ€ข ์ฐธ์กฐํ˜• ํƒ€์ž…์€ ํŒŒ๋ผ๋ฏธํ„ฐ ๋ณ€์ˆ˜๋ฅผ ๋ณ€๊ฒฝํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ•˜๋ ค๊ณ  ์ด์šฉํ•˜๊ธฐ์— const์˜ ์‚ฌ์šฉ์ด ์ผ๊ฒฌ ๋ชจ์ˆœ๋˜์–ด ๋ณด์ž„.
โ€ข ์‚ฌ์‹ค ์ฐธ์กฐํ˜• ํŒŒ๋ผ๋ฏธํ„ฐ ๋ณ€์ˆ˜๋Š” ๋ณ€์ˆซ๊ฐ’์„ ๋ณ€๊ฒฝํ•˜๋Š” ๋ชฉ์  ์™ธ์—๋„ ์„ฑ๋Šฅ ๊ด€์ ์—์„œ ๋ถˆํ•„์š”ํ•œ ๊ฐ’์˜ ๋ณต์ œ๋ฅผ
ํ”ผํ•˜๋ ค๋Š” ์˜๋„๋กœ ์ด์šฉ๋˜๋Š” ๊ฒฝ์šฐ๋„ ๋งŽ์Œ.
โ€ข const์ด๋ฉด์„œ ์ฐธ์กฐํ˜•์ธ ํŒŒ๋ผ๋ฏธํ„ฐ๋ฅผ ์ด์šฉํ•จ์œผ๋กœ์จ ๊ฐ’ ๋ณต์ œ ์˜ค๋ฒ„ํ—ค๋“œ๋„ ํ”ผํ•˜๊ณ  ์ฐธ์กฐํ˜•์˜ ์œ„ํ˜‘ ์š”์†Œ์ธ ์›๋ณธ์˜
๋ณ€์กฐ๋„ ๋ง‰๋Š”, ์–ด๋–ป๊ฒŒ ๋ณด๋ฉด ์ผ๊ฑฐ์–‘๋“์˜ ํšจ๊ณผ๋ฅผ ์–ป์Œ.
โ€ข ์ฐธ์กฐํ˜• const ๋ณ€์ˆ˜๋Š” ๊ฐ์ฒด๋ฅผ ์ด์šฉํ•  ๋•Œ ๋” ์ค‘์š”ํ•จ.
โ€ข

๊ฐ์ฒด๋Š” ์ •์ˆ˜ ๊ธฐ๋ณธ ํƒ€์ž…๋ณด๋‹ค ๋ฉ์น˜๋„ ํฌ๊ณ  ๋ณต์ œ ์ž‘์—… ์ž์ฒด๊ฐ€ ์˜๋„ํ•˜์ง€ ์•Š๋Š” ๋ถ€์ž‘์šฉ์„ ๋‚ณ๊ธฐ ์‰ฝ๊ธฐ ๋•Œ๋ฌธ.
ํด๋ž˜์Šค์˜ ์„ ์–ธ
โ€ข ํด๋ž˜์Šค(Class)๋Š” ๊ฐ์ฒด์˜ ํŠน์„ฑ์„ ์ •์˜.
โ€ข

C++์—์„œ class๋Š” ๋ณดํ†ต ํ—ค๋” ํŒŒ์ผ์—์„œ ์„ ์–ธ๋˜๊ณ  ์ƒ์„ธ ์ •์˜๋Š” ๊ด€๋ จ ์†Œ์Šค ํŒŒ์ผ์—์„œ ์ž‘์„ฑ๋จ.

โ€ข

ํด๋ž˜์Šค ์ •์˜๋Š” ํด๋ž˜์Šค ์ด๋ฆ„์„ ์„ ์–ธํ•˜๋Š” ๊ฒƒ์œผ๋กœ ์‹œ์ž‘.

โ€ข

์ค‘๊ด„ํ˜ธ {โ€ฆ} ์•ˆ์—์„œ๋Š” ์†์„ฑ ๋ฐ์ดํ„ฐ๋ฅผ ์ €์žฅํ•  ๋ฉค๋ฒ„ ๋ณ€์ˆ˜(Data Member)๋“ค๊ณผ ํด๋ž˜์Šค์˜ ํ–‰๋™์„ ์กฐ์ •ํ•  ์ˆ˜ ์žˆ๋Š”
๋ฉ”์„œ๋“œ(Method)๋“ค์ด ์„ ์–ธ๋จ.
โ€ข

โ€ข

ํด๋ž˜์Šค๋ช…๊ณผ ๊ฐ™์€ ์ด๋ฆ„์ด๋ฉด์„œ ๋ฆฌํ„ด๊ฐ’์ด ์—†๋Š” ๋ฉ”์„œ๋“œ๋Š” ์ƒ์„ฑ์ž(Constructor)๋ผ๊ณ  ๋ถˆ๋ฆผ.
โ€ข

โ€ข

๊ฐ ๋ฐ์ดํ„ฐ ๋ฉค๋ฒ„์™€ ๋ฉ”์„œ๋“œ๋“ค์€ public, protected, private ์„ธ ๊ฐ€์ง€ ์ ‘๊ทผ ๊ถŒํ•œ์— ๋งคํ•‘๋จ.

๊ฐ์ฒด๊ฐ€ ์ƒ์„ฑ๋  ๋•Œ ์ž๋™์œผ๋กœ ํ˜ธ์ถœ๋จ.

๋ฌผ๊ฒฐ ํ‘œ์‹œ(~)๋กœ ์‹œ์ž‘ํ•˜๊ณ  ํด๋ž˜์Šค๋ช…๊ณผ ๊ฐ™์€ ๋ฉ”์„œ๋“œ๋Š” ์†Œ๋ฉธ์ž(Destructor)๋ผ๊ณ  ํ•จ.
โ€ข

์†Œ๋ฉธ์ž๋Š” ๊ฐ์ฒด๊ฐ€ ๋ฉ”๋ชจ๋ฆฌ์—์„œ ํ•ด์ œ๋  ๋•Œ ์ž๋™์œผ๋กœ ํ˜ธ์ถœ๋จ.

โ€ข ์ƒ์ˆ˜ ๋ถˆ๋ณ€์˜ ์›์น™์ด ํ”„๋กœ๊ทธ๋žจ ์ „์ฒด์ ์œผ๋กœ ์ „ํŒŒ๋˜๊ณ  ์œ ์ง€๋˜๊ฒŒ ํ•˜๋ ค๋ฉด ๋ฉค๋ฒ„ ๋ณ€์ˆ˜์˜ ๋ณ€๊ฒฝ์ด ์—†๋Š” ๋ฉ”์„œ๋“œ๋Š”
๋ช…์‹œ์ ์œผ๋กœ const ํ‚ค์›Œ๋“œ๋กœ ์„ ์–ธํ•˜๋Š” ๊ฒƒ์ด ์ข‹์Œ.
โ€ข

const ๋ฉ”์„œ๋“œ๋ฅผ โ€œinspectorโ€๋ผ๊ณ  ํ•˜๊ณ  ๋ฉค๋ฒ„ ๋ณ€๊ฒฝ์ด ์žˆ๋Š” ๋ฉ”์„œ๋“œ๋Š” โ€œmutatorโ€๋ผ๊ณ  ํ•จ.
ํ‘œ์ค€ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ

โ€ข C++์—์„œ๋Š” ์œ ์šฉํ•œ ํด๋ž˜์Šค๋ฅผ ํ‘œ์ค€ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋กœ ์ œ๊ณต.
โ€ข

์ค‘๋ณตํ•ด์„œ ๊ฐ™์€ ๊ธฐ๋Šฅ์˜ ํด๋ž˜์Šค๋ฅผ ๊ฐœ๋ฐœํ•˜๋Š” ๋ถ€๋‹ด์„ ํ”ผํ•  ์ˆ˜ ์žˆ์Œ.

โ€ข

์˜ค๋žœ ์‹œ๊ฐ„ ๋งŽ์€ ์‚ฌ๋žŒ์œผ๋กœ๋ถ€ํ„ฐ ๊ฒ€์ฆ๋˜์—ˆ๊ธฐ ๋•Œ๋ฌธ์— ์˜ค๋ฅ˜์˜ ๊ฐ€๋Šฅ์„ฑ๋„ ์ ์Œ.

โ€ข

์„ฑ๋Šฅ ์ตœ์ ํ™” ๋˜ํ•œ ์ถฉ๋ถ„ํžˆ ๋˜์–ด ์žˆ์–ด์„œ ๊ฐœ๋ฐœ์ž๊ฐ€ ์ง์ ‘ ์ž‘์„ฑํ•˜๋Š” ๊ฒƒ๋ณด๋‹ค ๋” ๋›ฐ์–ด๋‚จ.

Weitere รคhnliche Inhalte

Was ist angesagt?

[KGC 2011]Boost ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์™€ C++11
[KGC 2011]Boost ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์™€ C++11[KGC 2011]Boost ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์™€ C++11
[KGC 2011]Boost ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์™€ C++11
ํฅ๋ฐฐ ์ตœ
ย 
C++ 11 ์— ๋Œ€ํ•ด์„œ ์‰ฝ๊ฒŒ ์•Œ์•„๋ด…์‹œ๋‹ค 1๋ถ€
C++ 11 ์— ๋Œ€ํ•ด์„œ ์‰ฝ๊ฒŒ ์•Œ์•„๋ด…์‹œ๋‹ค 1๋ถ€C++ 11 ์— ๋Œ€ํ•ด์„œ ์‰ฝ๊ฒŒ ์•Œ์•„๋ด…์‹œ๋‹ค 1๋ถ€
C++ 11 ์— ๋Œ€ํ•ด์„œ ์‰ฝ๊ฒŒ ์•Œ์•„๋ด…์‹œ๋‹ค 1๋ถ€
Gwangwhi Mah
ย 

Was ist angesagt? (20)

[C++ Korea] Effective Modern C++ Study, Item 1 - 3
[C++ Korea] Effective Modern C++ Study, Item 1 - 3[C++ Korea] Effective Modern C++ Study, Item 1 - 3
[C++ Korea] Effective Modern C++ Study, Item 1 - 3
ย 
[KGC 2011]Boost ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์™€ C++11
[KGC 2011]Boost ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์™€ C++11[KGC 2011]Boost ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์™€ C++11
[KGC 2011]Boost ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์™€ C++11
ย 
C#์„ ์‚ฌ์šฉํ•œ ๋น ๋ฅธ ํˆด ๊ฐœ๋ฐœ
C#์„ ์‚ฌ์šฉํ•œ ๋น ๋ฅธ ํˆด ๊ฐœ๋ฐœC#์„ ์‚ฌ์šฉํ•œ ๋น ๋ฅธ ํˆด ๊ฐœ๋ฐœ
C#์„ ์‚ฌ์šฉํ•œ ๋น ๋ฅธ ํˆด ๊ฐœ๋ฐœ
ย 
C++ 11 ์— ๋Œ€ํ•ด์„œ ์‰ฝ๊ฒŒ ์•Œ์•„๋ด…์‹œ๋‹ค 1๋ถ€
C++ 11 ์— ๋Œ€ํ•ด์„œ ์‰ฝ๊ฒŒ ์•Œ์•„๋ด…์‹œ๋‹ค 1๋ถ€C++ 11 ์— ๋Œ€ํ•ด์„œ ์‰ฝ๊ฒŒ ์•Œ์•„๋ด…์‹œ๋‹ค 1๋ถ€
C++ 11 ์— ๋Œ€ํ•ด์„œ ์‰ฝ๊ฒŒ ์•Œ์•„๋ด…์‹œ๋‹ค 1๋ถ€
ย 
C++ Advanced ๊ฐ•์˜ 3์ฃผ์ฐจ
C++ Advanced ๊ฐ•์˜ 3์ฃผ์ฐจC++ Advanced ๊ฐ•์˜ 3์ฃผ์ฐจ
C++ Advanced ๊ฐ•์˜ 3์ฃผ์ฐจ
ย 
[TechDays Korea 2015] ๋…น์Šจ C++ ์ฝ”๋“œ์— ๋ชจ๋˜ C++๋กœ ๊ธฐ๋ฆ„์น ํ•˜๊ธฐ
[TechDays Korea 2015] ๋…น์Šจ C++ ์ฝ”๋“œ์— ๋ชจ๋˜ C++๋กœ ๊ธฐ๋ฆ„์น ํ•˜๊ธฐ[TechDays Korea 2015] ๋…น์Šจ C++ ์ฝ”๋“œ์— ๋ชจ๋˜ C++๋กœ ๊ธฐ๋ฆ„์น ํ•˜๊ธฐ
[TechDays Korea 2015] ๋…น์Šจ C++ ์ฝ”๋“œ์— ๋ชจ๋˜ C++๋กœ ๊ธฐ๋ฆ„์น ํ•˜๊ธฐ
ย 
Refelction์˜ ๊ฐœ๋…๊ณผ RTTR ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ
Refelction์˜ ๊ฐœ๋…๊ณผ RTTR ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌRefelction์˜ ๊ฐœ๋…๊ณผ RTTR ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ
Refelction์˜ ๊ฐœ๋…๊ณผ RTTR ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ
ย 
ํ”„๋กœ๊ทธ๋ž˜๋ฐ ๋Œ€ํšŒ: C++11 ์ด์•ผ๊ธฐ
ํ”„๋กœ๊ทธ๋ž˜๋ฐ ๋Œ€ํšŒ: C++11 ์ด์•ผ๊ธฐํ”„๋กœ๊ทธ๋ž˜๋ฐ ๋Œ€ํšŒ: C++11 ์ด์•ผ๊ธฐ
ํ”„๋กœ๊ทธ๋ž˜๋ฐ ๋Œ€ํšŒ: C++11 ์ด์•ผ๊ธฐ
ย 
C++ Advanced ๊ฐ•์˜ 4์ฃผ์ฐจ
 C++ Advanced ๊ฐ•์˜ 4์ฃผ์ฐจ C++ Advanced ๊ฐ•์˜ 4์ฃผ์ฐจ
C++ Advanced ๊ฐ•์˜ 4์ฃผ์ฐจ
ย 
C++11
C++11C++11
C++11
ย 
C++ Advanced ๊ฐ•์˜ 1์ฃผ์ฐจ
C++ Advanced ๊ฐ•์˜ 1์ฃผ์ฐจC++ Advanced ๊ฐ•์˜ 1์ฃผ์ฐจ
C++ Advanced ๊ฐ•์˜ 1์ฃผ์ฐจ
ย 
C++ Advanced ๊ฐ•์˜ 5์ฃผ์ฐจ
C++ Advanced ๊ฐ•์˜ 5์ฃผ์ฐจC++ Advanced ๊ฐ•์˜ 5์ฃผ์ฐจ
C++ Advanced ๊ฐ•์˜ 5์ฃผ์ฐจ
ย 
WTL ์†Œ๊ฐœ
WTL ์†Œ๊ฐœWTL ์†Œ๊ฐœ
WTL ์†Œ๊ฐœ
ย 
[C++ Korea] Effective Modern C++ MVA item 9 Prefer alias declarations to type...
[C++ Korea] Effective Modern C++ MVA item 9 Prefer alias declarations to type...[C++ Korea] Effective Modern C++ MVA item 9 Prefer alias declarations to type...
[C++ Korea] Effective Modern C++ MVA item 9 Prefer alias declarations to type...
ย 
ํฌํŠธํด๋ฆฌ์˜ค์—์„œ ์‚ฌ์šฉํ•œ ๋ชจ๋˜ C++
ํฌํŠธํด๋ฆฌ์˜ค์—์„œ ์‚ฌ์šฉํ•œ ๋ชจ๋˜ C++ํฌํŠธํด๋ฆฌ์˜ค์—์„œ ์‚ฌ์šฉํ•œ ๋ชจ๋˜ C++
ํฌํŠธํด๋ฆฌ์˜ค์—์„œ ์‚ฌ์šฉํ•œ ๋ชจ๋˜ C++
ย 
Effective Modern C++ MVA item 18 Use std::unique_ptr for exclusive-ownership ...
Effective Modern C++ MVA item 18 Use std::unique_ptr for exclusive-ownership ...Effective Modern C++ MVA item 18 Use std::unique_ptr for exclusive-ownership ...
Effective Modern C++ MVA item 18 Use std::unique_ptr for exclusive-ownership ...
ย 
Visual studio 2010
Visual studio 2010Visual studio 2010
Visual studio 2010
ย 
C++ ํƒ€์ž… ์ถ”๋ก 
C++ ํƒ€์ž… ์ถ”๋ก C++ ํƒ€์ž… ์ถ”๋ก 
C++ ํƒ€์ž… ์ถ”๋ก 
ย 
[C++ korea] Effective Modern C++ study item 19 use shared ptr for shared owne...
[C++ korea] Effective Modern C++ study item 19 use shared ptr for shared owne...[C++ korea] Effective Modern C++ study item 19 use shared ptr for shared owne...
[C++ korea] Effective Modern C++ study item 19 use shared ptr for shared owne...
ย 
[devil's camp] - ์•Œ๊ณ ๋ฆฌ์ฆ˜ ๋Œ€ํšŒ์™€ STL (๋ฐ•์ธ์„œ)
[devil's camp] - ์•Œ๊ณ ๋ฆฌ์ฆ˜ ๋Œ€ํšŒ์™€ STL (๋ฐ•์ธ์„œ)[devil's camp] - ์•Œ๊ณ ๋ฆฌ์ฆ˜ ๋Œ€ํšŒ์™€ STL (๋ฐ•์ธ์„œ)
[devil's camp] - ์•Œ๊ณ ๋ฆฌ์ฆ˜ ๋Œ€ํšŒ์™€ STL (๋ฐ•์ธ์„œ)
ย 

Andere mochten auch

[NHN_NEXT] DirectX Tutorial ๊ฐ•์˜ ์ž๋ฃŒ
[NHN_NEXT] DirectX Tutorial ๊ฐ•์˜ ์ž๋ฃŒ[NHN_NEXT] DirectX Tutorial ๊ฐ•์˜ ์ž๋ฃŒ
[NHN_NEXT] DirectX Tutorial ๊ฐ•์˜ ์ž๋ฃŒ
MinGeun Park
ย 

Andere mochten auch (10)

C++ Programming - 4th Study
C++ Programming - 4th StudyC++ Programming - 4th Study
C++ Programming - 4th Study
ย 
๊ฒŒ์ž„ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ๊ธฐ์ดˆ ๊ณต๋ถ€๋ฒ•
๊ฒŒ์ž„ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ๊ธฐ์ดˆ ๊ณต๋ถ€๋ฒ•๊ฒŒ์ž„ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ๊ธฐ์ดˆ ๊ณต๋ถ€๋ฒ•
๊ฒŒ์ž„ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ๊ธฐ์ดˆ ๊ณต๋ถ€๋ฒ•
ย 
2014-15 Intermediate C++ Study #6
2014-15 Intermediate C++ Study #62014-15 Intermediate C++ Study #6
2014-15 Intermediate C++ Study #6
ย 
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
ย 
2014-15 Intermediate C++ Study #7
2014-15 Intermediate C++ Study #72014-15 Intermediate C++ Study #7
2014-15 Intermediate C++ Study #7
ย 
C++ Programming - 1st Study
C++ Programming - 1st StudyC++ Programming - 1st Study
C++ Programming - 1st Study
ย 
C++ Programming - 14th Study
C++ Programming - 14th StudyC++ Programming - 14th Study
C++ Programming - 14th Study
ย 
[NHN_NEXT] DirectX Tutorial ๊ฐ•์˜ ์ž๋ฃŒ
[NHN_NEXT] DirectX Tutorial ๊ฐ•์˜ ์ž๋ฃŒ[NHN_NEXT] DirectX Tutorial ๊ฐ•์˜ ์ž๋ฃŒ
[NHN_NEXT] DirectX Tutorial ๊ฐ•์˜ ์ž๋ฃŒ
ย 
Data Structure - 1st Study
Data Structure - 1st StudyData Structure - 1st Study
Data Structure - 1st Study
ย 

ร„hnlich wie 2013 C++ Study For Students #1

แ„‘แ…กแ„‹แ…ตแ„Šแ…ฅแ†ซ แ„‰แ…ณแ„แ…ฅแ„ƒแ…ต 9แ„Œแ…กแ†ผ
แ„‘แ…กแ„‹แ…ตแ„Šแ…ฅแ†ซ แ„‰แ…ณแ„แ…ฅแ„ƒแ…ต 9แ„Œแ…กแ†ผแ„‘แ…กแ„‹แ…ตแ„Šแ…ฅแ†ซ แ„‰แ…ณแ„แ…ฅแ„ƒแ…ต 9แ„Œแ…กแ†ผ
แ„‘แ…กแ„‹แ…ตแ„Šแ…ฅแ†ซ แ„‰แ…ณแ„แ…ฅแ„ƒแ…ต 9แ„Œแ…กแ†ผ
SeongHyun Ahn
ย 
แ„’แ…กแ†จแ„€แ…ญแ„‹แ…ฆแ„‰แ…ฅ แ„‡แ…ขแ„‹แ…ฎแ„Œแ…ต แ„‹แ…กแ†ญแ„‚แ…ณแ†ซ C
แ„’แ…กแ†จแ„€แ…ญแ„‹แ…ฆแ„‰แ…ฅ แ„‡แ…ขแ„‹แ…ฎแ„Œแ…ต แ„‹แ…กแ†ญแ„‚แ…ณแ†ซ Cแ„’แ…กแ†จแ„€แ…ญแ„‹แ…ฆแ„‰แ…ฅ แ„‡แ…ขแ„‹แ…ฎแ„Œแ…ต แ„‹แ…กแ†ญแ„‚แ…ณแ†ซ C
แ„’แ…กแ†จแ„€แ…ญแ„‹แ…ฆแ„‰แ…ฅ แ„‡แ…ขแ„‹แ…ฎแ„Œแ…ต แ„‹แ…กแ†ญแ„‚แ…ณแ†ซ C
Heesuk Kang
ย 
[NDC2016] TERA ์„œ๋ฒ„์˜ Modern C++ ํ™œ์šฉ๊ธฐ
[NDC2016] TERA ์„œ๋ฒ„์˜ Modern C++ ํ™œ์šฉ๊ธฐ[NDC2016] TERA ์„œ๋ฒ„์˜ Modern C++ ํ™œ์šฉ๊ธฐ
[NDC2016] TERA ์„œ๋ฒ„์˜ Modern C++ ํ™œ์šฉ๊ธฐ
Sang Heon Lee
ย 
C++ api design ํ’ˆ์งˆ
C++ api design ํ’ˆ์งˆC++ api design ํ’ˆ์งˆ
C++ api design ํ’ˆ์งˆ
HyeonSeok Choi
ย 

ร„hnlich wie 2013 C++ Study For Students #1 (20)

NHNNEXT ๊ฐœ๊ฒฝํ”„14 Subway Rocket Team Study 3rd C++
NHNNEXT ๊ฐœ๊ฒฝํ”„14 Subway Rocket Team Study 3rd C++NHNNEXT ๊ฐœ๊ฒฝํ”„14 Subway Rocket Team Study 3rd C++
NHNNEXT ๊ฐœ๊ฒฝํ”„14 Subway Rocket Team Study 3rd C++
ย 
Let's Go (golang)
Let's Go (golang)Let's Go (golang)
Let's Go (golang)
ย 
Effective c++ chapter1 2_dcshin
Effective c++ chapter1 2_dcshinEffective c++ chapter1 2_dcshin
Effective c++ chapter1 2_dcshin
ย 
C Language For Arduino
C Language For ArduinoC Language For Arduino
C Language For Arduino
ย 
๋‹น์‹ ์˜ ๋””๋ฒ„๊น…์— ๋‹ˆ์ฝ”๋‹ˆ์ฝ”๋‹ˆ
๋‹น์‹ ์˜ ๋””๋ฒ„๊น…์— ๋‹ˆ์ฝ”๋‹ˆ์ฝ”๋‹ˆ๋‹น์‹ ์˜ ๋””๋ฒ„๊น…์— ๋‹ˆ์ฝ”๋‹ˆ์ฝ”๋‹ˆ
๋‹น์‹ ์˜ ๋””๋ฒ„๊น…์— ๋‹ˆ์ฝ”๋‹ˆ์ฝ”๋‹ˆ
ย 
แ„‘แ…กแ„‹แ…ตแ„Šแ…ฅแ†ซ แ„‰แ…ณแ„แ…ฅแ„ƒแ…ต 9แ„Œแ…กแ†ผ
แ„‘แ…กแ„‹แ…ตแ„Šแ…ฅแ†ซ แ„‰แ…ณแ„แ…ฅแ„ƒแ…ต 9แ„Œแ…กแ†ผแ„‘แ…กแ„‹แ…ตแ„Šแ…ฅแ†ซ แ„‰แ…ณแ„แ…ฅแ„ƒแ…ต 9แ„Œแ…กแ†ผ
แ„‘แ…กแ„‹แ…ตแ„Šแ…ฅแ†ซ แ„‰แ…ณแ„แ…ฅแ„ƒแ…ต 9แ„Œแ…กแ†ผ
ย 
แ„’แ…กแ†จแ„€แ…ญแ„‹แ…ฆแ„‰แ…ฅ แ„‡แ…ขแ„‹แ…ฎแ„Œแ…ต แ„‹แ…กแ†ญแ„‚แ…ณแ†ซ C
แ„’แ…กแ†จแ„€แ…ญแ„‹แ…ฆแ„‰แ…ฅ แ„‡แ…ขแ„‹แ…ฎแ„Œแ…ต แ„‹แ…กแ†ญแ„‚แ…ณแ†ซ Cแ„’แ…กแ†จแ„€แ…ญแ„‹แ…ฆแ„‰แ…ฅ แ„‡แ…ขแ„‹แ…ฎแ„Œแ…ต แ„‹แ…กแ†ญแ„‚แ…ณแ†ซ C
แ„’แ…กแ†จแ„€แ…ญแ„‹แ…ฆแ„‰แ…ฅ แ„‡แ…ขแ„‹แ…ฎแ„Œแ…ต แ„‹แ…กแ†ญแ„‚แ…ณแ†ซ C
ย 
A tour of C++ : the basics
A tour of C++ : the basicsA tour of C++ : the basics
A tour of C++ : the basics
ย 
More effective c++ chapter1,2
More effective c++ chapter1,2More effective c++ chapter1,2
More effective c++ chapter1,2
ย 
C review
C  reviewC  review
C review
ย 
์—ฐ์‚ฐ์ž ์˜ค๋ฒ„๋กœ๋”ฉ
์—ฐ์‚ฐ์ž ์˜ค๋ฒ„๋กœ๋”ฉ์—ฐ์‚ฐ์ž ์˜ค๋ฒ„๋กœ๋”ฉ
์—ฐ์‚ฐ์ž ์˜ค๋ฒ„๋กœ๋”ฉ
ย 
6 function
6 function6 function
6 function
ย 
Boost๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์˜๋‚ด๋ถ€๊ตฌ์กฐ 20151111 ์„œ์ง„ํƒ
Boost๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์˜๋‚ด๋ถ€๊ตฌ์กฐ 20151111 ์„œ์ง„ํƒBoost๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์˜๋‚ด๋ถ€๊ตฌ์กฐ 20151111 ์„œ์ง„ํƒ
Boost๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์˜๋‚ด๋ถ€๊ตฌ์กฐ 20151111 ์„œ์ง„ํƒ
ย 
06์žฅ ํ•จ์ˆ˜
06์žฅ ํ•จ์ˆ˜06์žฅ ํ•จ์ˆ˜
06์žฅ ํ•จ์ˆ˜
ย 
Effective c++ chapter 1,2 ์š”์•ฝ
Effective c++ chapter 1,2 ์š”์•ฝEffective c++ chapter 1,2 ์š”์•ฝ
Effective c++ chapter 1,2 ์š”์•ฝ
ย 
Python
PythonPython
Python
ย 
[NDC2016] TERA ์„œ๋ฒ„์˜ Modern C++ ํ™œ์šฉ๊ธฐ
[NDC2016] TERA ์„œ๋ฒ„์˜ Modern C++ ํ™œ์šฉ๊ธฐ[NDC2016] TERA ์„œ๋ฒ„์˜ Modern C++ ํ™œ์šฉ๊ธฐ
[NDC2016] TERA ์„œ๋ฒ„์˜ Modern C++ ํ™œ์šฉ๊ธฐ
ย 
C++11
C++11C++11
C++11
ย 
๋ฌธ๊ณผ์ƒ ๋Œ€์ƒ ํŒŒ์ด์ฌ์„ ํ™œ์šฉํ•œ ๋ฐ์ดํ„ฐ ๋ถ„์„ ๊ฐ•์˜
๋ฌธ๊ณผ์ƒ ๋Œ€์ƒ ํŒŒ์ด์ฌ์„ ํ™œ์šฉํ•œ ๋ฐ์ดํ„ฐ ๋ถ„์„ ๊ฐ•์˜๋ฌธ๊ณผ์ƒ ๋Œ€์ƒ ํŒŒ์ด์ฌ์„ ํ™œ์šฉํ•œ ๋ฐ์ดํ„ฐ ๋ถ„์„ ๊ฐ•์˜
๋ฌธ๊ณผ์ƒ ๋Œ€์ƒ ํŒŒ์ด์ฌ์„ ํ™œ์šฉํ•œ ๋ฐ์ดํ„ฐ ๋ถ„์„ ๊ฐ•์˜
ย 
C++ api design ํ’ˆ์งˆ
C++ api design ํ’ˆ์งˆC++ api design ํ’ˆ์งˆ
C++ api design ํ’ˆ์งˆ
ย 

Mehr von Chris Ohk

Mehr von 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] ํ•˜์Šค์Šคํ†ค ๊ฐ•ํ™”ํ•™์Šต ํ™˜๊ฒฝ ๊ฐœ๋ฐœ๊ธฐ
ย 
[๋ธ๋ฆฌ๋งŒ์ฃผ] ๋Œ€ํ•™์› ์บ์Šฌ - ์„์‚ฌ์—์„œ ๊ฒŒ์ž„ ํ”„๋กœ๊ทธ๋ž˜๋จธ๊นŒ์ง€
[๋ธ๋ฆฌ๋งŒ์ฃผ] ๋Œ€ํ•™์› ์บ์Šฌ - ์„์‚ฌ์—์„œ ๊ฒŒ์ž„ ํ”„๋กœ๊ทธ๋ž˜๋จธ๊นŒ์ง€[๋ธ๋ฆฌ๋งŒ์ฃผ] ๋Œ€ํ•™์› ์บ์Šฌ - ์„์‚ฌ์—์„œ ๊ฒŒ์ž„ ํ”„๋กœ๊ทธ๋ž˜๋จธ๊นŒ์ง€
[๋ธ๋ฆฌ๋งŒ์ฃผ] ๋Œ€ํ•™์› ์บ์Šฌ - ์„์‚ฌ์—์„œ ๊ฒŒ์ž„ ํ”„๋กœ๊ทธ๋ž˜๋จธ๊นŒ์ง€
ย 
๋””๋ฏธ๊ณ  ํŠน๊ฐ• - ๊ฐœ๋ฐœ์„ ์‹œ์ž‘ํ•˜๋ ค๋Š” ์—ฌ๋Ÿฌ๋ถ„์—๊ฒŒ
๋””๋ฏธ๊ณ  ํŠน๊ฐ• - ๊ฐœ๋ฐœ์„ ์‹œ์ž‘ํ•˜๋ ค๋Š” ์—ฌ๋Ÿฌ๋ถ„์—๊ฒŒ๋””๋ฏธ๊ณ  ํŠน๊ฐ• - ๊ฐœ๋ฐœ์„ ์‹œ์ž‘ํ•˜๋ ค๋Š” ์—ฌ๋Ÿฌ๋ถ„์—๊ฒŒ
๋””๋ฏธ๊ณ  ํŠน๊ฐ• - ๊ฐœ๋ฐœ์„ ์‹œ์ž‘ํ•˜๋ ค๋Š” ์—ฌ๋Ÿฌ๋ถ„์—๊ฒŒ
ย 
์ฒญ๊ฐ•๋Œ€ ํŠน๊ฐ• - ํ”„๋กœ์ ํŠธ ์ œ๋Œ€๋กœ ํ•ด๋ณด๊ธฐ
์ฒญ๊ฐ•๋Œ€ ํŠน๊ฐ• - ํ”„๋กœ์ ํŠธ ์ œ๋Œ€๋กœ ํ•ด๋ณด๊ธฐ์ฒญ๊ฐ•๋Œ€ ํŠน๊ฐ• - ํ”„๋กœ์ ํŠธ ์ œ๋Œ€๋กœ ํ•ด๋ณด๊ธฐ
์ฒญ๊ฐ•๋Œ€ ํŠน๊ฐ• - ํ”„๋กœ์ ํŠธ ์ œ๋Œ€๋กœ ํ•ด๋ณด๊ธฐ
ย 
[NDC 2018] ์œ ์ฒด์—ญํ•™ ์—”์ง„ ๊ฐœ๋ฐœ๊ธฐ
[NDC 2018] ์œ ์ฒด์—ญํ•™ ์—”์ง„ ๊ฐœ๋ฐœ๊ธฐ[NDC 2018] ์œ ์ฒด์—ญํ•™ ์—”์ง„ ๊ฐœ๋ฐœ๊ธฐ
[NDC 2018] ์œ ์ฒด์—ญํ•™ ์—”์ง„ ๊ฐœ๋ฐœ๊ธฐ
ย 
My Way, Your Way
My Way, Your WayMy Way, Your Way
My Way, Your Way
ย 

2013 C++ Study For Students #1

  • 1. 2013 C++ STUDY FOR STUDENTS #1 ์˜ฅ์ฐฌํ˜ธ
  • 2. ์ง„ํ–‰์ž ์†Œ๊ฐœ โ€ข ์˜ฅ์ฐฌํ˜ธ โ€ข ํ˜„) KAIST ์ „์‚ฐํ•™๊ณผ ์„์‚ฌ๊ณผ์ • โ€ข ํ˜„) ์—์ด์ฝ˜์ถœํŒ์‚ฌ ์—ญ์ž โ€ข ํ˜„) ์ธ๋”” ๊ฒŒ์ž„ ๊ฐœ๋ฐœํŒ€ Game Drunker ํŒ€์žฅ โ€ข ์ „) ๊ฒฝ๋ถ๋Œ€ํ•™๊ต ์ปดํ“จํ„ฐํ•™๋ถ€ ์กธ์—… โ€ข ์ „) ์Šค๋งˆํŠธ๋น„์•„ ์ธํ„ด โ€“ ์•ˆ๋“œ๋กœ์ด๋“œ ํ”„๋กœ๊ทธ๋ž˜๋จธ โ€ข ์ „) ๊ฒฝ๋ถ๋Œ€ํ•™๊ต ์ปดํ“จํ„ฐํ•™๋ถ€ ์‹œ์Šคํ…œ ๊ด€๋ฆฌ์œ„์›์žฅ โ€ข ์ „) ์ˆœ์‹ฌ๊ณ ๋“ฑํ•™๊ต ์กธ์—…
  • 4. ์ด๋ฒˆ ์Šคํ„ฐ๋”” ์ฃผ์ œ โ€ข C++ ์–ธ์–ด์˜ ๋ฌธ๋ฒ•๊ณผ ์ค‘์š” ์š”์†Œ ๋‘˜๋Ÿฌ๋ณด๊ธฐ
  • 5. C++๋„ ์‹œ์ž‘์€ โ€œHELLO, WORLDโ€ โ€ข // helloworld.cpp #include <iostream> int main() { std::cout << โ€œHello, World!โ€ << std::endl; return 0; }
  • 6. ์ฃผ์„ โ€ข ์ฃผ์„์„ ํ‘œ์‹œํ•˜๋Š” ๋‘ ๊ฐ€์ง€ ๋ฐฉ๋ฒ• โ€ข // helloworld.cpp : ์Šฌ๋ž˜์‹œ ๋‘ ๊ฐœ๋ฅผ ๊ฒน์ณ ์จ์„œ ๊ทธ ๋’ค์— ๋”ฐ๋ผ์˜ค๋Š” ๋ฌธ์ž๋“ค์€ ๊ทธ ์ข…๋ฅ˜์™€ ๊ด€๊ณ„์—†์ด (์ค„ ๋ฐ”๊ฟˆ ๋ฌธ์ž๋ฅผ ์ œ์™ธํ•˜๊ณ ) ๋ชจ๋‘ ์ฃผ์„์œผ๋กœ ์ฒ˜๋ฆฌํ•˜๋Š” ๋ฐฉ๋ฒ•. โ€ข C ์–ธ์–ด์˜ ์ฃผ์„ : /*๋กœ ์‹œ์ž‘ํ•˜๊ณ  */๋กœ ๋๋‚˜๋Š” ๊ตฌ๊ฐ„์„ ์ค„ ๋ฐ”๊ฟˆ์„ ํฌํ•จํ•ด์„œ ๋ชจ๋‘ ์ฃผ์„ ์ฒ˜๋ฆฌ. โ€ข /* ์ปดํŒŒ์ผ๋Ÿฌ์— ์˜ํ•ด ๋ฌด์‹œ๋˜๋Š” * ์—ฌ๋Ÿฌ ์ค„์— ๊ฑธ์นœ * C ์Šคํƒ€์ผ ์ฃผ์„ */
  • 7. ์ „์ฒ˜๋ฆฌ ์ง€์‹œ์ž โ€ข C++ ํ”„๋กœ๊ทธ๋žจ์€ ์„ธ ๋‹จ๊ณ„๋ฅผ ๊ฑฐ์ณ์„œ ๋นŒ๋“œ(Build)๋œ๋‹ค. โ€ข ์ „์ฒ˜๋ฆฌ(Preprocess) ์ž‘์—… : ์ฝ”๋“œ ๋‚ด์—์„œ ์ง€์‹œ๋œ ๋ฉ”ํƒ€ ์ •๋ณด๋ฅผ ์ธ์‹ํ•˜์—ฌ ์ž๋™์œผ๋กœ ์ฝ”๋“œ๋ฅผ ์ˆ˜์ •. โ€ข ์ปดํŒŒ์ผ(Compile) ์ž‘์—… : ์†Œ์Šค ์ฝ”๋“œ๋ฅผ ๊ธฐ๊ณ„์–ด๋กœ ๋ฒˆ์—ญ. โ€ข ๋งํฌ(Link) ์ž‘์—… : ๊ธฐ๊ณ„์–ด๋กœ ๋œ ์—ฌ๋Ÿฌ ์˜ค๋ธŒ์ ํŠธ ํŒŒ์ผ์„ ๋ฌถ์–ด์„œ ํ•˜๋‚˜์˜ ์‹คํ–‰ ํŒŒ์ผ๋กœ ๋งŒ๋“ฆ. โ€ข ์ „์ฒ˜๋ฆฌ ์ง€์‹œ์ž๋Š” ์ „์ฒ˜๋ฆฌ ๋‹จ๊ณ„์—์„œ ์‚ฌ์šฉ๋˜๋Š” ๊ฒƒ. # ๋ฌธ์ž๋กœ ์‹œ์ž‘. โ€ข #include <iostream> ๊ตฌ๋ฌธ์€ ์ „์ฒ˜๋ฆฌ ์ง€์‹œ์ž #include๋ฅผ ํ†ตํ•ด <iostream> ํ—ค๋” ํŒŒ์ผ์˜ ์ฝ”๋“œ๋ฅด ๋ชจ๋‘ ๊ฐ€์ ธ์™€ ํ˜„์žฌ ์†Œ์Šค์— ์‚ฝ์ž…ํ•˜๋„๋ก ์ง€์‹œ. โ€ข ํ—ค๋” ํŒŒ์ผ์€ ๋ณดํ†ต ๋‹ค๋ฅธ ํŒŒ์ผ์— ๊ตฌํ˜„(Define)๋œ ํ•จ์ˆ˜๋“ค์˜ ํ•จ์ˆ˜ ์„ ์–ธ(Declare)๋ฌธ์„ ๋‹ด๊ณ  ์žˆ์–ด์„œ ๊ทธ ํ•จ์ˆ˜๋“ค์„ ํ˜„์žฌ ์†Œ์Šค์—์„œ ์ฐธ์กฐํ•˜์—ฌ ํ˜ธ์ถœํ•  ์ˆ˜ ์žˆ๋„๋ก ์ปดํŒŒ์ผ๋Ÿฌ์— ์ •๋ณด๋ฅผ ์•Œ๋ ค์ฃผ๋Š” ์šฉ๋„๋กœ ํ™œ์šฉ.
  • 8. ์ „์ฒ˜๋ฆฌ ์ง€์‹œ์ž โ€ข ์ž์ฃผ ์‚ฌ์šฉํ•˜๋Š” ์ „์ฒ˜๋ฆฌ ์ง€์‹œ์ž โ€ข #include [ํŒŒ์ผ๋ช…] : ์ง€์ •๋œ ํŒŒ์ผ์˜ ๋‚ด์šฉ์„ ํ˜„์žฌ ์†Œ์Šค ํŒŒ์ผ์˜ ํ•ด๋‹น ์ง€์‹œ์ž๊ฐ€ ์œ„์น˜ํ•œ ๊ณณ์— ์‚ฝ์ž…. โ€ข #define [key] [value] : ์ง€์‹œ์ž ์ดํ›„์— ๋’ค๋”ฐ๋ฅด๋Š” ๋ชจ๋“  key ํ‚ค์›Œ๋“œ๋ฅผ value๋กœ ์น˜ํ™˜. โ€ข #ifdef [key], #ifndef [key], #endif : ํŠน์ • ํ‚ค์›Œ๋“œ๊ฐ€ #define ๋ฌธ์ด๋‚˜ ์ปดํŒŒ์ผ๋Ÿฌ ์˜ต์…˜์œผ๋กœ ์ •์˜๋˜์–ด ์žˆ๋Š”์ง€ ์—ฌ๋ถ€์— ๋”ฐ๋ผ ํ•ด๋‹น ์กฐ๊ฑด ๋ธ”๋ก์˜ ์ฝ”๋“œ๋ฅผ ํ™œ์„ฑํ™” / ๋น„ํ™œ์„ฑํ™”์‹œํ‚ด. โ€ข #pragma [xyz] : [xyz] ๋ถ€๋ถ„์€ ์ปดํŒŒ์ผ๋Ÿฌ๋งˆ๋‹ค ๋‹ค๋ฅธ๋ฐ, ์–ธ์–ด ์ฐจ์›์—์„œ ํ‘œ์ค€ํ™”๋˜์ง€ ์•Š๊ณ  ํŠน์ • ์ข…๋ฅ˜์˜ ์ปดํŒŒ์ผ๋Ÿฌ์—์„œ๋งŒ ์ง€์›๋˜๋Š” ์ „์ฒ˜๋ฆฌ ๊ธฐ๋Šฅ์„ ์ด์šฉํ•  ์ˆ˜ ์žˆ์Œ.
  • 9. MAIN() ํ•จ์ˆ˜ โ€ข main() ํ•จ์ˆ˜๋Š” ํ”„๋กœ๊ทธ๋žจ์„ ์‹คํ–‰ํ•  ๋•Œ ๊ฐ€์žฅ ๋จผ์ € ํ˜ธ์ถœ๋˜๋Š” ์‹œ์ž‘์ . โ€ข int ํƒ€์ž… ๋ฆฌํ„ด๊ฐ’์€ ํ”„๋กœ๊ทธ๋žจ์˜ ์ƒํƒœ๋ฅผ ์•Œ๋ ค์ฃผ๋Š” ๋ชฉ์ ์œผ๋กœ ์‚ฌ์šฉ๋จ. โ€ข main() ํ•จ์ˆ˜๋Š” ํŒŒ๋ผ๋ฏธํ„ฐ ์—†์ด ํ˜ธ์ถœ๋  ์ˆ˜๋„ ์žˆ๊ณ  ๋‹ค์Œ๊ณผ ๊ฐ™์ด ๋‘ ๊ฐœ์˜ ํŒŒ๋ผ๋ฏธํ„ฐ๋ฅผ ๋ฐ›์„ ์ˆ˜๋„ ์žˆ์Œ. โ€ข int main(int argc, char* argv[]) โ€ข argc๋Š” ํ”„๋กœ๊ทธ๋žจ์„ ์‹คํ–‰ํ•  ๋•Œ ๋ช…๋ น์ค„์—์„œ ๋„˜๊ฒจ์ง„ ํŒŒ๋ผ๋ฏธํ„ฐ์˜ ๊ฐœ์ˆ˜. โ€ข argv๋Š” ๊ฐ ํŒŒ๋ผ๋ฏธํ„ฐ์˜ ๋ฌธ์ž์—ด ๊ฐ’์ด ๋“ค์–ด ์žˆ์Œ. โ€ข ํ”„๋กœ๊ทธ๋žจ์˜ ์ด๋ฆ„๋„ ํŒŒ๋ผ๋ฏธํ„ฐ์— ํฌํ•จ๋˜์–ด ์ œ์ผ ์ฒซ ๋ฒˆ์งธ ํŒŒ๋ผ๋ฏธํ„ฐ๋กœ ์ทจ๊ธ‰.
  • 10. I/O ์ŠคํŠธ๋ฆผ โ€ข ์ŠคํŠธ๋ฆผ ์ถœ๋ ฅ ๊ธฐ๋Šฅ : std::cout โ€ข ์ถœ๋ ฅํ•  ๋ฐ์ดํ„ฐ๋ฅผ ์ปจ๋ฒ ์ด์–ด ๋ฒจํŠธ์— ๋ฐ€์–ด ๋„ฃ๋Š”๋‹ค๊ณ  ์ƒ๊ฐ. โ€ข << ์—ฐ์‚ฐ์ž๋Š” ๋ฐ์ดํ„ฐ๋ฅผ ์ปจ๋ฒ ์ด์–ด ๋ฒจํŠธ์— ๋ฐ€์–ด ๋„ฃ๋Š” ์—ญํ• . โ€ข ๋‹ค์–‘ํ•œ ํƒ€์ž…์˜ ๋ฐ์ดํ„ฐ๋ฅผ << ์—ฐ์‚ฐ์ž๋กœ ๋ฐ€์–ด ๋„ฃ์„ ์ˆ˜ ์žˆ์Œ. โ€ข std::cout << โ€œThere are โ€œ << 219 << โ€œways I love you.โ€ << std::endl; โ€ข std::endl์€ ์ถœ๋ ฅํ•œ ๋ฉ”์‹œ์ง€์˜ ํ•œ ์ค„์ด ๋๋‚ฌ์Œ์„ ์•Œ๋ ค์คŒ. โ€ข ์ค„ ๋ฐ”๊ฟˆ์„ ํ•˜๊ธฐ ์œ„ํ•ด n ๋ฌธ์ž(์ค„ ๋ฐ”๊ฟˆ์„ ์˜๋ฏธํ•˜๋Š” ํŠน์ˆ˜ ๋ฌธ์ž(Escape Character))๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜๋„ ์žˆ์Œ. โ€ข n : ์ค„ ๋ฐ”๊ฟˆ, r : ์บ๋ฆฌ์ง€ ๋ฆฌํ„ด(์ถœ๋ ฅ ์ปค์„œ๋ฅผ ์ฒ˜์Œ์œผ๋กœ ์˜ฎ๊น€), t : ํƒญ ๋ฌธ์ž, : ์—ญ์Šฌ๋ž˜์‹œ ๋ฌธ์ž, โ€ : ๋”ฐ์˜ดํ‘œ
  • 11. I/O ์ŠคํŠธ๋ฆผ โ€ข ์ŠคํŠธ๋ฆผ ์ž…๋ ฅ ๊ธฐ๋Šฅ : std::cin โ€ข >> ์—ฐ์‚ฐ์ž๋ฅผ ์ž…๋ ฅ ์ŠคํŠธ๋ฆผ์— ์ ์šฉ. โ€ข ์‚ฌ์šฉ์ž์˜ ํ‚ค๋ณด๋“œ ์ž…๋ ฅ์„ ๋ฐ›๋Š” ๋ฐ ์ด์šฉํ•  ์ˆ˜ ์žˆ์Œ. โ€ข ์‚ฌ์šฉ์ž ์ž…๋ ฅ์„ ๋ฐ›์„ ๋•Œ ์ž…๋ ฅ๋ฐ›๋Š” ๋ฐ์ดํ„ฐ๊ฐ€ ์–ด๋–ค ํƒ€์ž…์ธ์ง€ ์•Œ ์ˆ˜ ์—†์œผ๋ฏ€๋กœ ๊นŒ๋‹ค๋กœ์šด ๋ฉด์ด ์žˆ์Œ.
  • 12. ๋„ค์ž„์ŠคํŽ˜์ด์Šค โ€ข ์ฝ”๋“œ ๋‚ด์—์„œ ์ด๋ฆ„์ด ๊ฐ™์€ ๋ณ€์ˆ˜๋ช…์ด๋‚˜ ํ•จ์ˆ˜๋ช…์ด ์„œ๋กœ ์ถฉ๋Œํ•˜๋Š” ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•ด ๊ณ ์•ˆ๋จ. โ€ข ์˜ˆ๋ฅผ ๋“ค์–ด foo() ํ•จ์ˆ˜๋ฅผ ๋งŒ๋“ค์–ด ๋†“๊ณ , ๋‚˜์ค‘์— ์™ธ๋ถ€ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ์‚ฌ์šฉํ•ด์•ผ๋งŒ ํ•˜๋Š” ์ƒํ™ฉ์ด ๋˜์–ด์„œ ์ด์šฉํ•˜๋ ค๊ณ  ๋ดค๋”๋‹ˆ ์™ธ๋ถ€ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์—๋„ foo() ํ•จ์ˆ˜๊ฐ€ ์žˆ์„ ๋•Œ, ์ปดํŒŒ์ผ๋Ÿฌ ์ž…์žฅ์—์„œ๋Š” ์–ด๋Š foo() ํ•จ์ˆ˜๋ฅผ ์‚ฌ์šฉํ•ด์•ผ ํ•˜๋Š”์ง€ ์•Œ์•„๋‚ผ ๋ฐฉ๋ฒ•์ด ์—†์Œ. โ€ข ๋„ค์ž„์ŠคํŽ˜์ด์Šค๋Š” ํŠน์ • ์ฝ”๋“œ ์˜์—ญ์—์„œ ์ฐธ์กฐํ•˜๋Š” ์ด๋ฆ„์„ ์–ด๋Š ์ด๋ฆ„ ์ง‘ํ•ฉ์—์„œ ์ฐพ์•„์•ผ ํ•˜๋Š”์ง€ ๋ฒ”์œ„๋ฅผ ์ œ์•ˆํ•˜๋Š” ์ˆ˜๋‹จ. โ€ข ํŠน์ • ํ•จ์ˆ˜๋ฅผ ํŠน์ • ๋„ค์ž„์ŠคํŽ˜์ด์Šค์— ์ข…์†์‹œํ‚ค๋ ค๋ฉด ๋‹ค์Œ๊ณผ ๊ฐ™์ด ๋„ค์ž„์ŠคํŽ˜์ด์Šค ๋ธ”๋ก์œผ๋กœ ๋‘˜๋Ÿฌ์Œˆ. โ€ข โ€ข namespace mycode { void foo(); } ํ•จ์ˆ˜ ์„ ์–ธ๋ฟ ์•„๋‹ˆ๋ผ ํ•จ์ˆ˜ ๊ตฌํ˜„ ๋ณธ์ฒด๋„ ๋„ค์ž„์ŠคํŽ˜์ด์Šค ์•„๋ž˜์— ๋‘˜ ์ˆ˜ ์žˆ์Œ.
  • 13. ๋„ค์ž„์ŠคํŽ˜์ด์Šค โ€ข ๋„ค์ž„์ŠคํŽ˜์ด์Šค ์•„๋ž˜์— ์„ ์–ธ๋œ foo() ํ•จ์ˆ˜๋ฅผ ํ˜ธ์ถœํ•  ๋•Œ๋Š” ๋„ค์ž„์ŠคํŽ˜์ด์Šค์™€ ::๋ฅผ ์•ž ์ฒจ์ž๋กœ ๋ง๋ถ™์ž„. โ€ข ::์™€ ๊ฐ™์€ ์ฒจ์ž๋ฅผ ์Šค์ฝ”ํ”„ ์„ค์ • ์—ฐ์‚ฐ์ž(Scope Resolution Operator)๋ผ๊ณ  ํ•จ. โ€ข โ€ข mycode::foo(); // โ€œmycodeโ€ ๋„ค์ž„์ŠคํŽ˜์ด์Šค์— ์†ํ•œ โ€œfooโ€ ํ•จ์ˆ˜์˜ ํ˜ธ์ถœ ๋„ค์ž„์ŠคํŽ˜์ด์Šค ์‚ฌ์šฉ์„ ๋ช…์‹œ์ ์œผ๋กœ ์„ ์–ธํ•˜๋ฉด ๊ทธ ์•„๋ž˜์— ์žˆ๋Š” ์ฝ”๋“œ์—์„œ๋Š” ์Šค์ฝ”ํ”„ ์„ค์ • ์—ฐ์‚ฐ์ž mycode::๋ฅผ ๋ถ™์ด์ง€ ์•Š์•„๋„ mycode ๋„ค์ž„์ŠคํŽ˜์ด์Šค์— ์†ํ•œ ์ด๋ฆ„(ํ•จ์ˆ˜๋ช…, ๋ฐ์ดํ„ฐ ํƒ€์ž… / ๋ณ€์ˆ˜๋ช… ๋“ฑ)์„ ๋ถˆ๋Ÿฌ๋‹ค ์“ธ ์ˆ˜ ์žˆ์Œ. โ€ข using namespace mycode; int main() { foo(); // mycode::foo();์™€ ๊ฐ™์€ ํšจ๊ณผ๋ฅผ ๊ฐ€์ง return 0; }
  • 14. ๋„ค์ž„์ŠคํŽ˜์ด์Šค โ€ข Hello, World ์˜ˆ์ œ์—์„œ๋„ ๋„ค์ž„์ŠคํŽ˜์ด์Šค๊ฐ€ ์ด์šฉ๋จ. โ€ข cout๊ณผ endl์€ ๋„ค์ž„์ŠคํŽ˜์ด์Šค std์— ์†ํ•œ ๊ฒƒ๋“ค์ด๊ธฐ ๋•Œ๋ฌธ์— ๋‹ค์Œ๊ณผ ๊ฐ™์ด using ์ง€์‹œ์ž๋กœ ๋„ค์ž„์ŠคํŽ˜์ด์Šค๋ฅผ ์ด์šฉํ•˜๋ฉด ๊ฐœ๋ณ„์ ์œผ๋กœ ์Šค์ฝ”ํ”„ ์„ค์ • ์—ฐ์‚ฐ์ž std::๋ฅผ ์‚ฌ์šฉํ•˜์ง€ ์•Š์•„๋„ cout๊ณผ endl์„ ์ด์šฉํ•  ์ˆ˜ ์žˆ์Œ. โ€ข #include <iostream> using namespace std; int main() { cout << โ€œHello, World!โ€ << endl; return 0; } โ€ข using ์ง€์‹œ์ž๋Š” ๋„ค์ž„์ŠคํŽ˜์ด์Šค์— ์†ํ•œ ์ด๋ฆ„์„ ํŠน์ •ํ•ด์„œ ์ง€์ •ํ•  ์ˆ˜๋„ ์žˆ์Œ. โ€ข ์˜ˆ๋ฅผ ๋“ค์–ด ๋„ค์ž„์ŠคํŽ˜์ด์Šค std์˜ cout๋งŒ์„ ์Šค์ฝ”ํ”„ ์„ค์ • ์—ฐ์‚ฐ์ž ์—†์ด ์‚ฌ์šฉํ•˜๊ณ  ์‹ถ๋‹ค๋ฉด ๋‹ค์Œ๊ณผ ๊ฐ™์ด ์„ ์–ธ. โ€ข using std::cout;
  • 15. ๋ณ€์ˆ˜ โ€ข C++์—์„œ ๋ณ€์ˆ˜๋Š” ์ฝ”๋“œ ๋‚ด ์–ด๋””์„œ๋‚˜ ์„ ์–ธํ•  ์ˆ˜ ์žˆ๊ณ , ์„ ์–ธํ•œ ์ดํ›„์—๋Š” ํ•ด๋‹น ์„ ์–ธ์ด ์†ํ•œ ๋ธ”๋ก ๋‚ด์˜ ์„ ์–ธ ์ดํ›„ ์ฝ”๋“œ์—์„œ ๊ทธ ๋ณ€์ˆ˜์— ์ ‘๊ทผํ•  ์ˆ˜ ์žˆ์Œ. โ€ข ์ดˆ๊นƒ๊ฐ’์„ ์„ค์ •ํ•˜์ง€ ์•Š๊ณ ๋„ ๊ฐ€๋Šฅํ•˜๋ฉฐ, ๊ทธ๋ ‡๊ฒŒ ํ•˜๋ฉด ๋ณ€์ˆ˜๊ฐ€ ํ• ๋‹น๋œ ๋ฉ”๋ชจ๋ฆฌ ์˜์—ญ์— ์›๋ž˜ ๋“ค์–ด ์žˆ๋˜ ๊ฐ’์ด ์‚ฌ์šฉ๋จ. โ€ข ๋ช…์‹œ์ ์ธ ์ดˆ๊นƒ๊ฐ’ ์„ค์ •์ด ์—†๋Š” ๋ณ€์ˆ˜ ์„ ์–ธ์€ ๋ฒ„๊ทธ๋ฅผ ์œ ๋ฐœํ•˜๊ธฐ ์‰ฝ๊ธฐ ๋•Œ๋ฌธ์— ํ”ผํ•˜๋Š” ๊ฒƒ์ด ์ข‹์Œ. โ€ข int uninitializedInt; int initializedInt = 7; cout << uninitializedInt << โ€œ is a random valueโ€ << endl; cout << initializedInt << โ€œ was assigned an initial valueโ€ << endl;
  • 16. ๋ณ€์ˆ˜ โ€ข C++์—์„œ ํ”ํ•˜๊ฒŒ ์ด์šฉํ•˜๋Š” ๋ณ€์ˆ˜ ํƒ€์ž…. โ€ข int : ์Œ์ˆ˜ / ์–‘์ˆ˜ ์ •์ˆ˜. ํ‘œํ˜„ ๊ฐ€๋Šฅํ•œ ํฌ๊ธฐ๋Š” ์ปดํŒŒ์ผ๋Ÿฌ์— ๋”ฐ๋ผ ๋‹ค๋ฆ„. โ†’ int i = 7; โ€ข short (int) : ์ž‘์€ ์Œ์ˆ˜ / ์–‘์ˆ˜ ์ •์ˆ˜(๋ณดํ†ต 2๋ฐ”์ดํŠธ ํฌ๊ธฐ). โ†’ short s = 13; โ€ข long (int) : long ์ •์ˆ˜(๋ณดํ†ต 4๋ฐ”์ดํŠธ ํฌ๊ธฐ). โ†’ long l = -7; โ€ข [C++ 11] long long (int) : long long ์ •์ˆ˜. ํ‘œํ˜„ ๊ฐ€๋Šฅํ•œ ํฌ๊ธฐ๋Š” ์ปดํŒŒ์ผ๋Ÿฌ์— ๋”ฐ๋ผ ๋‹ค๋ฅด๋‚˜ ์ตœ์†Œ long ์ •์ˆ˜ ์ด์ƒ์œผ๋กœ ๋ณดํ†ต 8๋ฐ”์ดํŠธ ํฌ๊ธฐ์ž„. โ†’ long long ll = 14; โ€ข unsigned int / unsigned short (int) / [C++ 11] unsigned long (int) / [C++ 11] unsigned long long (int) : 0์„ ํฌํ•จํ•œ ์–‘์ˆ˜๋งŒ ํ‘œํ˜„ ๊ฐ€๋Šฅํ•œ ์ •์ˆ˜. โ†’ unsigned int i = 2; unsigned short s = 23;
  • 17. ๋ณ€์ˆ˜ โ€ข C++์—์„œ ํ”ํ•˜๊ฒŒ ์ด์šฉํ•˜๋Š” ๋ณ€์ˆ˜ ํƒ€์ž…. โ€ข float : ๋ถ€๋™์†Œ์ˆ˜์  ์ˆซ์ž. โ†’ float f = 7.2f; โ€ข double : ๋ฐฐ์ •๋„ ์ •๋ฐ€๋„ ๋ถ€๋™์†Œ์ˆ˜์  ์ˆซ์ž. ์ตœ์†Œํ•œ ๋ถ€๋™์†Œ์ˆ˜์  ์ด์ƒ์˜ ์ •๋ฐ€๋„ ํ‘œํ˜„ ๊ฐ€๋Šฅ. โ†’ double d = 7.2; โ€ข long double : long ๋ฐฐ์ •๋„ ์ •๋ฐ€๋„ ๋ถ€๋™์†Œ์ˆ˜์  ์ˆซ์ž. ์ตœ์†Œํ•œ double ์ด์ƒ์˜ ์ •๋ฐ€๋„ ํ‘œํ˜„ ๊ฐ€๋Šฅ. โ†’ long double d = 16.98L; โ€ข char : 8๋น„ํŠธ ๋ฌธ์ž. โ†’ char ch = โ€˜mโ€™; โ€ข [C++ 11] char16_t : 16๋น„ํŠธ ๋ฌธ์ž. โ†’ char16_t c16 = uโ€™mโ€™; โ€ข [C++ 11] char32_t : 32๋น„ํŠธ ๋ฌธ์ž. โ†’ char32_t c32 = Uโ€™mโ€™; โ€ข wchar_t : ์™€์ด๋“œ ๋ฌธ์ž๋กœ ์ปดํŒŒ์ผ๋Ÿฌ์— ๋”ฐ๋ผ ๋‹ค๋ฆ„. โ†’ wchar_t w = Lโ€™mโ€™;
  • 18. ๋ณ€์ˆ˜ โ€ข C++์—์„œ ํ”ํ•˜๊ฒŒ ์ด์šฉํ•˜๋Š” ๋ณ€์ˆ˜ ํƒ€์ž…. โ€ข bool : ์ฐธ(true) ๋˜๋Š” ๊ฑฐ์ง“(false)๋ฅผ ๋‚˜ํƒ€๋‚ด๋Š” ๋…ผ๋ฆฌ ํƒ€์ž…. โ†’ bool b = true; โ€ข [C++ 11] auto : ์ปดํŒŒ์ผ๋Ÿฌ์— ์˜ํ•ด ์ž๋™์œผ๋กœ ํƒ€์ž…์ด ์ •ํ•ด์ง€๋Š” ํƒ€์ž…. โ†’ auto i = 7; // i๋Š” ์ž๋™์œผ๋กœ intํ˜•์ด ๋จ โ€ข [C++ 11] decltype(expr) : โ€œexprโ€์ด ๋‚˜ํƒ€๋‚ด๋Š” ํƒ€์ž…๊ณผ ๊ฐ™์€ ํƒ€์ž…์„ ๋”ฐ๋ฅด๋Š” ํƒ€์ž…. โ†’ int i = 7; decltype(i) j = 8; // j๋Š” i์˜ ํƒ€์ž…์„ ๋”ฐ๋ผ int๊ฐ€ ๋จ
  • 19. ๋ณ€์ˆ˜ โ€ข C++์—์„œ๋Š” ๋ช…์‹œ์ ์ธ ๋ณ€์ˆ˜ ํƒ€์ž… ์บ์ŠคํŒ…์„ ์œ„ํ•ด ์„ธ ๊ฐ€์ง€ ๋ฐฉ๋ฒ•์„ ์ง€์›. โ€ข 1. ๋ณ€์ˆ˜ ์•ž์— ์บ์ŠคํŒ…ํ•  ํƒ€์ž…์„ ๊ด„ํ˜ธ๋กœ ๋ช…์‹œ. โ€ข โ€ข 2. ํƒ€์ž… ์ƒ์„ฑ์ž ํ•จ์ˆ˜๋ฅผ ์ด์šฉ. โ€ข โ€ข bool someBool = (bool)someInt; bool someBool = bool(someInt); 3. ์บ์ŠคํŒ… ์—ฐ์‚ฐ์ž๋ฅผ ์ด์šฉ. โ€ข bool someBool = static_cast<bool>(someInt); โ€ข int ๋ณ€์ˆ˜์˜ ๊ฐ’์ด 0์ด๋ฉด false๋กœ, 0์ด ์•„๋‹ˆ๋ฉด true๋กœ ๋ณ€ํ™˜.
  • 20. ๋ณ€์ˆ˜ โ€ข Coerced ์บ์ŠคํŒ… : ์–ด๋–ค ์ƒํ™ฉ์—์„œ๋Š” ๋ณ€์ˆ˜์˜ ํƒ€์ž… ์บ์ŠคํŒ…์ด ์ž๋™์œผ๋กœ ์ผ์–ด๋‚  ์ˆ˜๋„ ์žˆ์Œ. โ€ข ์˜ˆ๋ฅผ ๋“ค์–ด short ํƒ€์ž… ๋ณ€์ˆ˜๋Š” long ํƒ€์ž… ๋ณ€์ˆ˜๋กœ ๋ช…์‹œ์ ์ธ ํƒ€์ž… ์บ์ŠคํŒ… ์—†์ด๋„ ์ž๋™์œผ๋กœ ์บ์ŠคํŒ… ๋  ์ˆ˜๋„ ์žˆ์Œ. โ€ข ์™œ๋ƒํ•˜๋ฉด long ํƒ€์ž…์€ short ํƒ€์ž…๊ณผ ๊ฐ™์ด ์ •์ˆ˜๋ฅผ ํ‘œํ˜„ํ•˜๋ฉด์„œ๋„ ๊ทธ ํ‘œํ˜„ ๋ฒ”์œ„๊ฐ€ ๋” ๋„“๊ธฐ ๋•Œ๋ฌธ. โ€ข long someLong = someShort; // ๋ช…์‹œ์ ์ธ ํƒ€์ž… ์บ์ŠคํŒ…์ด ์—†์–ด๋„ ๋œ๋‹ค. โ€ข ๋ณ€์ˆ˜๊ฐ€ ์ž๋™์œผ๋กœ ํƒ€์ž… ์บ์ŠคํŒ…๋  ๋•Œ ๋ฐ์ดํ„ฐ์— ์†์‹ค์ด ์—†๋Š”์ง€ ๊ณ ๋ คํ•ด์•ผ ํ•จ. โ€ข ์˜ˆ๋ฅผ ๋“ค์–ด float ๋ณ€์ˆ˜๊ฐ€ int ๋ณ€์ˆ˜๋กœ ์บ์ŠคํŒ…๋œ๋‹ค๋ฉด ์†Œ์ˆ˜์  ์ดํ•˜ ๊ฐ’๋“ค์€ ์žƒ์–ด๋ฒ„๋ฆฌ๊ฒŒ ๋จ.
  • 21. ์—ฐ์‚ฐ์ž โ€ข C++ ์—ฐ์‚ฐ์ž์—๋Š” ์ดํ•ญ ์—ฐ์‚ฐ์ž(๋‘ ๊ฐœ์˜ ๋ณ€์ˆ˜๋ฅผ ๋Œ€์ƒ์œผ๋กœ ํ•˜๋Š” ์—ฐ์‚ฐ์ž)์™€ ๋‹จํ•ญ ์—ฐ์‚ฐ์ž(ํ•˜๋‚˜์˜ ๋ณ€์ˆ˜๋ฅผ ๋Œ€์ƒ์œผ๋กœ ํ•˜๋Š” ์—ฐ์‚ฐ์ž) ๊ทธ๋ฆฌ๊ณ  ์‚ผํ•ญ ์—ฐ์‚ฐ์ž(์„ธ ๊ฐœ์˜ ๋ณ€์ˆ˜๋ฅผ ๋Œ€์ƒ์œผ๋กœ ํ•˜๋Š” ์—ฐ์‚ฐ์ž)๊ฐ€ ์žˆ์Œ. โ€ข C++ ์—ฐ์‚ฐ์ž์˜ ์ข…๋ฅ˜ โ€ข = : ์ดํ•ญ ์—ฐ์‚ฐ์ž๋กœ ์˜ค๋ฅธ์ชฝ์— ์žˆ๋Š” ๊ฐ’์„ ์™ผ์ชฝ์— ์žˆ๋Š” ๋ณ€์ˆ˜๋กœ ๋Œ€์ž…. โ†’ int i; i = 3; int j; j = i; โ€ข ! : ๋‹จํ•ญ ์—ฐ์‚ฐ์ž๋กœ, true / false ๋…ผ๋ฆฌ๊ฐ’์„ ๋ฐ˜์ „. โ†’ bool b = !true; bool b2 = !b; โ€ข + : ๋ง์…ˆ์„ ์œ„ํ•œ ์ดํ•ญ ์—ฐ์‚ฐ์ž. โ†’ int i = 3 + 2; int j = i + 5; int k = i + j; โ€ข -, *, / : ๊ฐ๊ฐ ๋บ„์…ˆ, ๊ณฑ์…ˆ, ๋‚˜๋ˆ—์…ˆ์„ ์œ„ํ•œ ์ดํ•ญ ์—ฐ์‚ฐ์ž. โ†’ int i = 5 โ€“ 1; int j = 5 * 2; int k = j / i; โ€ข % : ์ •์ˆ˜ ๋‚˜๋ˆ—์…ˆ์—์„œ์˜ ๋‚˜๋จธ์ง€ ๊ฐ’์„ ๊ตฌํ•จ. โ†’ int remainder = 5 % 2;
  • 22. ์—ฐ์‚ฐ์ž โ€ข C++ ์—ฐ์‚ฐ์ž์˜ ์ข…๋ฅ˜ โ€ข ++ : ๋ณ€์ˆซ๊ฐ’ 1์„ ์ฆ๊ฐ€์‹œํ‚ค๋Š” ๋‹จํ•ญ ์—ฐ์‚ฐ์ž. ์—ฐ์‚ฐ์ž๊ฐ€ ๋ณ€์ˆ˜ ์˜ค๋ฅธ์ชฝ์— ์žˆ์œผ๋ฉด โ€œ์‚ฌํ›„ ์ฆ๊ฐ€โ€๊ฐ€ ์ ์šฉ๋˜์–ด ํ•ด๋‹น ์ฝ”๋“œ ๋ผ์ธ์—์„œ๋Š” ์ฆ๊ฐ€ํ•˜๊ธฐ ์ „์˜ ๊ฐ’์„ ๊ฐ€์ง€๋‚˜ ๊ทธ ๋ผ์ธ์„ ๋ฒ—์–ด๋‚˜๋ฉด 1 ์ฆ๊ฐ€. ์—ฐ์‚ฐ์ž๊ฐ€ ๋ณ€์ˆ˜ ์™ผ์ชฝ์— ์žˆ์œผ๋ฉด โ€œ์‚ฌ์ „ ์ฆ๊ฐ€โ€๊ฐ€ ์ ์šฉ๋˜์–ด ๋ฐ”๋กœ ํ•ด๋‹น ์ฝ”๋“œ ๋ผ์ธ์—์„œ 1 ์ฆ๊ฐ€ํ•œ ๊ฐ’์„ ๊ฐ€์ง. โ†’ i++; ++i; โ€ข -- : ๋ณ€์ˆซ๊ฐ’์„ 1 ๊ฐ์†Œ์‹œํ‚ค๋Š” ๋‹จํ•ญ ์—ฐ์‚ฐ์ž. ++์™€ ๋งˆ์ฐฌ๊ฐ€์ง€๋กœ ์—ฐ์‚ฐ์ž ์œ„์น˜์— ๋”ฐ๋ผ ์‚ฌํ›„ ๊ฐ์†Œ ๋˜๋Š” ์‚ฌ์ „ ๊ฐ์†Œ๊ฐ€ ์ ์šฉ. โ†’ i--; --i; โ€ข +=, -=, *=, /=, %= : ๊ฐ๊ฐ i = i + j; i = i โ€“ j; i = i * j; i = i / j; i = i % j;์˜ ์ถ•์•ฝํ˜•. โ€ข &, &= : ๋‘ ๋ณ€์ˆ˜์˜ ๊ฐ ๋น„ํŠธ ๊ฐ’์— AND ์—ฐ์‚ฐ์„ ํ•จ. โ†’ i = j & k; j &= k; โ€ข I, I= : ๋‘ ๋ณ€์ˆ˜์˜ ๊ฐ ๋น„ํŠธ ๊ฐ’์— OR ์—ฐ์‚ฐ์„ ํ•จ. โ†’ i = j | k; j |= k;
  • 23. ์—ฐ์‚ฐ์ž โ€ข C++ ์—ฐ์‚ฐ์ž์˜ ์ข…๋ฅ˜ โ€ข <<, >>, <<=, >>= : ์™ผ์ชฝ ๋ณ€์ˆ˜์˜ ๋น„ํŠธ ์—ด์„ ์˜ค๋ฅธ์ชฝ ๊ฐ’๋งŒํผ ์™ผ์ชฝ(<<) ๋˜๋Š” ์˜ค๋ฅธ์ชฝ(>>)์œผ๋กœ ์‹œํ”„ํŠธ(Shift). โ†’ i = i << 1; i = i >> 4; i <<= 1; i >>= 4; โ€ข ^, ^= : ๋‘ ๋ณ€์ˆ˜์˜ ๊ฐ ๋น„ํŠธ ๊ฐ’์— ๋ฐฐํƒ€์  ๋…ผ๋ฆฌํ•ฉ(Exclusive OR) ์—ฐ์‚ฐ์„ ํ•จ. โ†’ i = i ^ j, i ^= j; โ€ข ์—ฐ์‚ฐ ์ˆ˜์‹์„ ์ดํ•ดํ•˜๊ธฐ ์‰ฌ์šด ์กฐ๊ฐ์œผ๋กœ ์ชผ๊ฐœ๊ฑฐ๋‚˜ ๊ด„ํ˜ธ๋ฅผ ์ด์šฉํ•˜์—ฌ ๋ช…์‹œ์ ์œผ๋กœ ์ˆœ์„œ๋ฅผ ์ง€์ •ํ•˜๋Š” ๊ฒƒ์ด ์ข‹์Œ. โ€ข int i = 34 + 8 * 2 + 21 / 7 % 2; โ€ข int i = 34 + (8 * 2) + ((21 / 7) % 2); โ€ข int i = 8 * 2; int j = 21 / 7; j %= 2; i = 34 + i + j;
  • 24. ์—ฐ์‚ฐ์ž โ€ข #include <iostream> using namespace std; int main() { int someInteger = 256; short someShort; long someLong; float someFloat; double someDouble; someInteger++; someInteger *= 2; someShort = (short)someInteger; someLong = someShort * 10000; someFloat = someLong + 0.785; someDouble = (double)someFloat / 100000; cout << someDouble << endl; return 0; }
  • 25. ์—ด๊ฑฐ ํƒ€์ž… โ€ข ์—ด๊ฑฐ(Enumeration) ํƒ€์ž…์€ ์–ด๋–ค ์ˆซ์ž๋“ค์„ ๋‚˜์—ดํ• ์ง€ ํ”„๋กœ๊ทธ๋ž˜๋จธ๊ฐ€ ๋งˆ์Œ๋Œ€๋กœ ์ •ํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ•ด์คŒ. โ€ข ์˜ˆ๋ฅผ ๋“ค์–ด ์ฒด์Šค ํ”„๋กœ๊ทธ๋žจ์ด๋ผ๋ฉด ๊ฐ๊ฐ์˜ ๋ง์— ํŠน์ • int ๊ฐ’์„ ํ• ๋‹นํ•˜์—ฌ ๋ง์˜ ์ข…๋ฅ˜๋ฅผ ๋‚˜ํƒ€๋‚ด๋Š” ๊ณ ์œ  ๋ฒˆํ˜ธ๋กœ ์ด์šฉ. โ€ข โ€ข const int kPieceTypeKing = 0; const int kPieceTypeQueen = 1; const int kPieceTypeRook = 2; const int kPieceTypePawn = 3; // etc int myPiece = kPieceTypeKing; ์ด์™€ ๊ฐ™์ด ๊ฐ’์„ ์ •์˜ํ•ด๋„ ๋˜์ง€๋งŒ, ์ž˜๋ชป ์‚ฌ์šฉ๋  ๊ฐ€๋Šฅ์„ฑ์ด ์žˆ์Œ. โ€ข ๋งŒ์•ฝ ๋‹ค๋ฅธ ํ”„๋กœ๊ทธ๋ž˜๋จธ๊ฐ€ ๊ฐ ๋ง์˜ ๊ฐ’์— ๋Œ€ํ•ด ์‹ค์ˆ˜๋กœ 1์”ฉ ๋”ํ•ด์„œ ์‚ฌ์šฉํ•œ๋‹ค๋ฉด ์™•์ด ์™•๋น„๊ฐ€ ๋˜์–ด ๋ฒ„๋ฆผ. โ€ข ์ตœ์•…์˜ ์ƒํ™ฉ์œผ๋กœ -1๊ณผ ๊ฐ™์ด ์–ด๋Š ๋ง์˜ ๊ณ ์œณ๊ฐ’๊ณผ๋„ ๋งค์นญ์ด ์•ˆ๋˜๋Š” ์—‰๋šฑํ•œ ๊ฐ’์„ ์ด์šฉํ•ด ๋ฒ„๋ฆด ์ˆ˜๋„ ์žˆ์Œ.
  • 26. ์—ด๊ฑฐ ํƒ€์ž… โ€ข ์—ด๊ฑฐ ํƒ€์ž…์€ ์ด๋Ÿฌํ•œ ๋ฌธ์ œ๋ฅผ ๋‚˜์—ดํ•˜๋Š” ๊ฐ’ ๋ชฉ๋ก๊ณผ ๋ฒ”์œ„๋ฅผ ์—„๊ฒฉํ•˜๊ฒŒ ๊ด€๋ฆฌํ•จ์œผ๋กœ์จ ๋ฐฉ์ง€. โ€ข typedef enum { kPieceTypeKing, kPieceTypeQueen, kPieceTypeRook, kPieceTypePawn } PieceT; โ€ข ์‹ค์ œ๋กœ ์—ด๊ฑฐ ํƒ€์ž…์€ ์ปดํŒŒ์ผ๋Ÿฌ ์•ˆ์—์„œ ์ •์ˆ˜ ํƒ€์ž…์œผ๋กœ ์ฒ˜๋ฆฌ. โ€ข ์˜ˆ๋ฅผ ๋“ค์–ด kPieceTypeKing์˜ ์‹ค์ œ ๊ฐ’์€ ์ •์ˆ˜ 0. โ€ข ํ•˜์ง€๋งŒ PieceT์˜ ๊ฐ€๋Šฅํ•œ ๊ฐ’ ๋ชฉ๋ก์„ ์ •ํ•จ์œผ๋กœ์จ PieceT ํƒ€์ž… ๋ณ€์ˆ˜๊ฐ€ ์ •ํ•ด์ง„ ๊ฐ’ ๋ชฉ๋ก ์ด๋ฆ„ ์ด์™ธ์˜ ๊ฐ’์œผ๋กœ ์„ค์ •๋  ๋•Œ ์ปดํŒŒ์ผ๋Ÿฌ๊ฐ€ ์—๋Ÿฌ ๋ฉ”์‹œ์ง€๋ฅผ ์ถœ๋ ฅํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ•ด์คŒ. โ€ข PieceT myPiece; myPiece = 0;
  • 27. ์—ด๊ฑฐ ํƒ€์ž… โ€ข ์—ด๊ฑฐ ํƒ€์ž…์˜ ๊ฐ ํ•ญ๋ชฉ์— ๋Œ€ํ•ด ๊ฐœ๋ณ„์ ์œผ๋กœ ํŠน์ • ์ •์ˆ˜ ๊ฐ’์„ ํ• ๋‹นํ•˜๋Š” ๊ฒƒ๋„ ๊ฐ€๋Šฅ. โ€ข typedef enum { kPieceTypeKing = 1, kPieceTypeQueen, kPieceTypeRook = 10, kPieceTypePawn } PieceT; โ€ข kPieceTypeKing์ด ๊ฐ’ 1์„ ๋ช…์‹œ์ ์œผ๋กœ ํ• ๋‹น๋ฐ›์•˜๊ธฐ์— ๋ฐ”๋กœ ๋’ค๋”ฐ๋ฅด๋Š” kPieceTypeQueen์€ ์ปดํŒŒ์ผ๋Ÿฌ์— ์˜ํ•ด 1 ์ฆ๊ฐ€ํ•œ ๊ฐ’ 2๋ฅผ ์ž๋™์œผ๋กœ ํ• ๋‹น๋ฐ›์Œ. โ€ข ๋ช…์‹œ์ ์œผ๋กœ 10์„ ํ• ๋‹น๋ฐ›์€ kPieceTypeRook์˜ ๋ฐ”๋กœ ๋’ค์— ์žˆ๋Š” kPieceTypePawn๋„ 1 ์ฆ๊ฐ€ํ•œ 11์„ ์ž๋™์œผ๋กœ ํ• ๋‹น๋ฐ›์Œ.
  • 28. [C++ 11] ์—„๊ฒฉํ•œ ์—ด๊ฑฐ ํƒ€์ž… โ€ข ์•ž์„œ ์„ค๋ช…ํ•œ ์—ด๊ฑฐ ํƒ€์ž…์€ ํƒ€์ž… ์„ธ์ดํ”„ํ•˜์ง€ ์•Š์Œ. โ€ข ๊ธฐ๋ณธ์ ์œผ๋กœ ์ •์ˆ˜ ํƒ€์ž… ์ทจ๊ธ‰์„ ๋ฐ›๊ธฐ ๋•Œ๋ฌธ์— ์„œ๋กœ ์™„์ „ ๋ณ„๊ฐœ์ธ ์—ด๊ฑฐ ํƒ€์ž… ๊ฐ„์— ๋น„๊ต ์—ฐ์‚ฐ์ด ๊ฐ€๋Šฅ. โ€ข C++ 11์—์„œ๋Š” ์ด๋Ÿฐ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•ด enum class๋ฅผ ๋„์ž…. โ€ข โ€ข enum class MyEnum { EnumValue1, EnumValue2 = 10, EnumValue3 }; MyEnum์€ ํƒ€์ž… ์„ธ์ดํ”„ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์—ด๊ฑฐ ๊ฐ’์ด ๋‹ค๋ฅธ ์ •์ˆ˜ ํƒ€์ž… ๋ณ€์ˆ˜๋กœ ์ž๋™์œผ๋กœ ์บ์ŠคํŒ…๋˜์ง€ ์•Š๊ณ  class ์ด๋ฆ„์œผ๋กœ ์Šค์ฝ”ํ”„ ์„ค์ •์ด ๋˜์ง€ ์•Š์œผ๋ฉด ์ฐธ์กฐํ•  ์ˆ˜๋„ ์—†์Œ.
  • 29. [C++ 11] ์—„๊ฒฉํ•œ ์—ด๊ฑฐ ํƒ€์ž… โ€ข ์ผ๋ฐ˜ ์ •์ˆ˜ ๊ฐ’๊ณผ MyEnum ๊ฐ’์˜ ๋น„๊ต๋Š” C++ 11์—์„œ ๋ฌธ๋ฒ• ์œ„๋ฐ˜. โ€ข if (MyEnum::EnumValue3 == 11) { โ€ฆ } โ€ข ์—ด๊ฑฐ ํƒ€์ž…์€ ๊ธฐ๋ณธ์ ์œผ๋กœ int ํƒ€์ž…๊ณผ ์—ฐ๊ณ„๋˜์ง€๋งŒ enum class์—์„œ๋Š” ๊ฐ’์˜ ํƒ€์ž…์„ ๋ฐ”๊ฟ€ ์ˆ˜๋„ ์žˆ์Œ. โ€ข enum class MyEnumLong : unsigned long { EnumValueLong1, EnumValueLong2 = 10, EnumValueLong3 };
  • 30. ๊ตฌ์กฐ์ฒด โ€ข ๊ตฌ์กฐ์ฒด๋Š” ๊ธฐ๋ณธ ํƒ€์ž… ๋˜๋Š” ๋‹ค๋ฅธ ๊ตฌ์กฐ์ฒด๋ฅผ ์กฐํ•ฉํ•˜์—ฌ ์ƒˆ๋กœ์šด ํƒ€์ž…์„ ๋งŒ๋“ค์–ด๋ƒ„. โ€ข ๊ฐ€์žฅ ํ”ํ•œ ์˜ˆ๋Š” ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์˜ ๋ ˆ์ฝ”๋“œ ํ•˜๋‚˜๋ฅผ ๋‚˜ํƒ€๋‚ด๋Š” ๊ฒƒ. โ€ข ์˜ˆ๋ฅผ ๋“ค์–ด ์ง์›์˜ ์‹ ์ƒ๋ช…์„ธ๋ฅผ ๊ธฐ๋กํ•˜๋Š” ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋ผ๋ฉด ์ง์›๋ณ„๋กœ ์ด๋ฆ„์˜ ์ฒซ ๊ธ€์ž์™€ ์ง์› ๋“ฑ๋ก ๋ฒˆํ˜ธ, ๊ธ‰์—ฌ ์ •๋ณด๊ฐ€ ์žˆ๋‹ค๋ฉด ๊ตฌ์กฐ์ฒด๋กœ ์ •์˜ํ•˜์—ฌ ํ—ค๋” ํŒŒ์ผ์— ๋‘˜ ์ˆ˜ ์žˆ์Œ. โ€ข โ€ข typedef struct { char firstInitial; char middleInitial; char lastInitial; int employeeNumber; int salary; } EmployeeT; EmployeeT ํƒ€์ž…์œผ๋กœ ๋ณ€์ˆ˜๋ฅผ ์„ ์–ธํ•˜๋ฉด ์œ„์˜ ๊ฐ ํ•ญ๋ชฉ์„ ๋ชจ๋‘ ๊ฐ€์ง„ ๋ฐ์ดํ„ฐ๊ฐ€ ๋จ.
  • 31. ๊ตฌ์กฐ์ฒด โ€ข #include <iostream> using namespace std; int main() { EmployeeT e; e.firstInitial = โ€˜Mโ€™; e.middleInitial = โ€˜Rโ€™; e.lastInitial = โ€˜Gโ€™; e.employeeNumber = 42; e.salary = 80000; cout << โ€œEmployee: โ€œ << e.firstInitial << e.middleInitial << e.lastInitial << endl; cout << โ€œNumber: โ€œ << e.employeeNumber << endl; cout << โ€œSalary: โ€œ << e.salary << endl; return 0; }
  • 32. IF/ELSE ๊ตฌ๋ฌธ โ€ข if ๊ตฌ๋ฌธ์€ ์กฐ๊ฑด์ด ์ฐธ์ด๋ฉด if ๋ฌธ ์•„๋ž˜ ๋ธ”๋ก ๋˜๋Š” ๋ธ”๋ก์ด ์—†์„ ๊ฒฝ์šฐ ๋ฐ”๋กœ ํ›„์†๋˜๋Š” ๋ผ์ธ์˜ ์ฝ”๋“œ๋ฅผ ์‹คํ–‰. โ€ข ์กฐ๊ฑด์ด ๊ฑฐ์ง“์ด๋ฉด else ๋ธ”๋ก์˜ ์ฝ”๋“œ๋ฅผ ์‹คํ–‰. else ๋ธ”๋ก์ด ์—†์œผ๋ฉด if ๋ฌธ ๋ธ”๋ก์˜ ํ›„ ์† ์ฝ”๋“œ๊ฐ€ ์‹คํ–‰. โ€ข if (i > 4) { // ์ž‘์—… ์ˆ˜ํ–‰ } else if (i > 2) { // ๋‹ค๋ฅธ ์ž‘์—… ์ˆ˜ํ–‰ } else { // ๋˜ ๋‹ค๋ฅธ ์ž‘์—… ์ˆ˜ํ–‰ } โ€ข if ๋ฌธ์˜ ๊ด„ํ˜ธ ์˜์—ญ์— ๋“ค์–ด๊ฐˆ ๊ตฌ๋ฌธ์€ ๋ฐ˜๋“œ์‹œ ๋ถˆ(Boolean) ๋ณ€์ˆ˜์ด๊ฑฐ๋‚˜ ๋ถˆ ํƒ€์ž…์˜ ๊ฒฐ๊ณผ ๊ฐ’์„ ๊ฐ€์ ธ์•ผ ํ•จ.
  • 33. SWITCH ๊ตฌ๋ฌธ โ€ข switch ๊ตฌ๋ฌธ์€ ๋ณ€์ˆซ๊ฐ’์— ๋”ฐ๋ฅธ ์ฝ”๋“œ ๋ถ„๊ธฐ๋ฅผ ํŽธ๋ฆฌํ•˜๊ฒŒ ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ•ด์คŒ. โ€ข switch ๊ตฌ๋ฌธ์—์„œ๋Š” ๋ณ€์ˆ˜๋ฅผ ์ƒ์ˆซ๊ฐ’๊ณผ ๋น„๊ตํ•ด์•ผ ํ•˜๋ฏ€๋กœ if ๊ตฌ๋ฌธ์—์„œ์ฒ˜๋Ÿผ โ€œ~๋ณด๋‹ค ํฌ๊ฑฐ๋‚˜ ์ž‘์€โ€๊ณผ ๊ฐ™์€ ์กฐ๊ฑด์€ switch ๊ตฌ๋ฌธ์œผ๋กœ ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์—†์Œ. โ€ข ๊ฐ ์ƒ์ˆซ๊ฐ’์€ case ๊ตฌ๋ฌธ์— ๋Œ€์‘๋˜์–ด ํ•ด๋‹น ๋ณ€์ˆ˜๊ฐ€ ํŠน์ • ์ƒ์ˆซ๊ฐ’๊ณผ ๊ฐ™์œผ๋ฉด ํ•ด๋‹น case ๊ตฌ๋ฌธ์˜ ์ฝ”๋“œ๊ฐ€ break ๊ตฌ๋ฌธ์„ ๋งŒ๋‚  ๋•Œ๊นŒ์ง€ ์‹คํ–‰๋จ. โ€ข ์–ด๋Š ์ƒ์ˆซ๊ฐ’์—๋„ ํ•ด๋‹นํ•˜์ง€ ์•Š์„ ๋•Œ ์‹คํ–‰ํ•  ์ฝ”๋“œ๊ฐ€ ์žˆ๋‹ค๋ฉด default ๊ตฌ๋ฌธ์œผ๋กœ ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์žˆ์Œ. โ€ข break ๊ตฌ๋ฌธ์„ ๋น ๋œจ๋ฆฌ๋ฉด ์˜๋„ํ•˜์ง€ ์•Š๊ฒŒ ๋‹ค์Œ case(๋˜๋Š” default)์— ํ•ด๋‹นํ•˜๋Š” ์ฝ”๋“œ๊นŒ์ง€ ์ˆ˜ํ–‰๋˜์–ด ๋ฒ„๋ฆฌ๋ฏ€๋กœ ์ฃผ์˜ํ•ด์•ผ ํ•จ.
  • 34. SWITCH ๊ตฌ๋ฌธ โ€ข switch (menuItem) { case kOpenMenuItem: // ํŒŒ์ผ ์—ด๊ธฐ ์ฝ”๋“œ break; case kSaveMenuItem: // ํŒŒ์ผ ์ €์žฅ ์ฝ”๋“œ break; default: // ์—๋Ÿฌ ๋ฉ”์‹œ์ง€ ์ถœ๋ ฅ ์ฝ”๋“œ break; }
  • 35. ์‚ผํ•ญ ์—ฐ์‚ฐ์ž โ€ข C++์˜ ์œ ์ผํ•œ ์‚ผํ•ญ ์—ฐ์‚ฐ์ž โ€ข โ€œ๋งŒ์•ฝ ~์ด๋ฉด ~ํ•˜๊ณ  ์•„๋‹ˆ๋ฉด ~ํ•œ๋‹คโ€๋ฅผ ์ถ•์•ฝ์ ์œผ๋กœ ํ‘œํ˜„ํ•˜๋Š” ๋ฌธ๋ฒ•์œผ๋กœ ?๊ณผ :๋กœ ์ด๋ฃจ์–ด์ง. โ€ข std::cout << ((i > 2) ? โ€œyesโ€ : โ€œnoโ€); โ€ข i๊ฐ€ 2๋ณด๋‹ค ํฌ๋ฉด yes๋ฅผ ์ถœ๋ ฅํ•˜๊ณ  ์•„๋‹ˆ๋ฉด no๋ฅผ ์ถœ๋ ฅํ•˜๋Š” ์ฝ”๋“œ.
  • 36. ์กฐ๊ฑด ์—ฐ์‚ฐ์ž โ€ข ์ผ๋ฐ˜์ ์ธ ์กฐ๊ฑด ์—ฐ์‚ฐ์ž์— ๋Œ€ํ•œ ์„ค๋ช…. โ€ข <, <=, >, >= : ์™ผ์ชฝ ๊ฐ’์„ ์˜ค๋ฅธ์ชฝ ๊ฐ’๊ณผ ๋น„๊ตํ•˜์—ฌ, ์ž‘๊ฑฐ๋‚˜, ์ž‘๊ฑฐ๋‚˜ / ๊ฐ™๊ฑฐ๋‚˜, ํฌ๊ฑฐ๋‚˜, ํฌ๊ฑฐ๋‚˜ / ๊ฐ™๊ฑฐ๋‚˜์— ๋”ฐ๋ผ ์ฐธ, ๊ฑฐ์ง“์„ ๋ฆฌํ„ดํ•จ. โ†’ if (i < 0) { std::cout << โ€œi๋Š” ์Œ์ˆ˜์ด๋‹ค.โ€; } โ€ข == : ์™ผ์ชฝ / ์˜ค๋ฅธ์ชฝ ๊ฐ’์ด ๊ฐ™์œผ๋ฉด ์ฐธ. ๋Œ€์ž… ์—ฐ์‚ฐ์ž =๊ณผ ํ˜ผ๋™ํ•˜์ง€ ์•Š๋„๋ก ์ฃผ์˜. โ†’ if (i == 3) { std::cout << โ€œi๋Š” 3์ด๋‹ค.โ€; } โ€ข != : ์™ผ์ชฝ / ์˜ค๋ฅธ์ชฝ ๊ฐ’์ด ๋‹ค๋ฅด๋ฉด ์ฐธ. โ†’ if (i != 3) { std::cout << โ€œi๋Š” 3์ด ์•„๋‹ˆ๋‹ค.โ€; } โ€ข ! : ๋‹จํ•ญ ์—ฐ์‚ฐ์ž๋กœ, ๋…ผ๋ฆฌ ๊ธฐํ˜ธ NOT๊ณผ ๊ฐ™์Œ. ์ฐธ / ๊ฑฐ์ง“์˜ ๊ฒฐ๊ณผ๋ฅผ ๋ฐ˜์ „์‹œํ‚ด. โ†’ if (!someBoolean) { std::cout << โ€œsomeBoolean์€ ๊ฑฐ์ง“์ด๋‹ค.โ€; } โ€ข && : ๋…ผ๋ฆฌ ๊ธฐํ˜ธ AND์™€ ๊ฐ™์Œ. ์™ผ์ชฝ๊ณผ ์˜ค๋ฅธ์ชฝ ๋ณ€์ˆ˜ ๋˜๋Š” ํ‘œํ˜„์‹์˜ ๊ฒฐ๊ณผ๊ฐ€ ๋ชจ๋‘ ์ฐธ์ด๋ฉด ์ฐธ์„ ๋ฆฌํ„ด. โ†’ if (someBoolean && someOtherBoolean) { std::cout << โ€œ์–‘์ชฝ ๋‹ค ์ฐธ์ด๋‹ค.โ€; } โ€ข || : ๋…ผ๋ฆฌ ๊ธฐํ˜ธ OR๊ณผ ๊ฐ™์Œ. ์™ผ์ชฝ / ์˜ค๋ฅธ์ชฝ ์–ด๋Š ์ชฝ์ด๋“  ์ฐธ์ด๋ฉด ์ฐธ์„ ๋ฆฌํ„ด. โ†’ if (someBoolean || someOtherBoolean) { std::cout << โ€œ์ตœ์†Œํ•œ ๋‘˜ ์ค‘ ํ•˜๋‚˜๋Š” ์ฐธ์ด๋‹ค.โ€; }
  • 37. ์กฐ๊ฑด ์—ฐ์‚ฐ์ž โ€ข C++๋Š” ํ‘œํ˜„์‹์„ ์‹คํ–‰ํ•  ๋•Œ ๋‹จ๋ฝ ๋…ผ๋ฆฌ(Short-Circuit Logic)๋ฅผ ์ ์šฉ. โ€ข ์กฐ๊ฑด๋ฌธ์˜ ์ตœ์ข… ๊ฒฐ๊ณผ๊ฐ€ ๋‚จ์•„์žˆ๋Š” ํ‘œํ˜„์‹์˜ ๊ฒฐ๊ณผ์— ๊ด€๊ณ„์—†์ด ํ™•์ •๋  ์ˆ˜ ์žˆ๋‹ค๋ฉด ํ‘œํ˜„์‹๋“ค์€ ์‹คํ–‰ํ•˜์ง€ ์•Š์Œ. โ€ข ์˜ˆ๋ฅผ ๋“ค์–ด ์—ฌ๋Ÿฌ ํ‘œํ˜„์‹ ํ•ญ๋ชฉ์— ๋Œ€ํ•ด OR ์—ฐ์‚ฐ์„ ํ•  ๋•Œ ๊ฐ ํ‘œํ˜„์‹์˜ ํ•ญ๋ชฉ์„ ์‹คํ–‰ํ•˜๋˜ ์ค‘์— ๊ฒฐ๊ณผ๊ฐ€ ์ฐธ์ธ ๊ฒƒ์„ ๋งŒ๋‚˜๋ฉด ๊ทธ ์ดํ›„์˜ ํ•ญ๋ชฉ์˜ ๊ฒฐ๊ณผ์— ๊ด€๊ณ„์—†์ด ์ „์ฒด ์กฐ๊ฑด ๊ตฌ๋ฌธ์˜ ๊ฐ’์ด ์ฐธ์ด ๋˜๋ฏ€๋กœ ์ดํ›„ ํ•ญ๋ชฉ์€ ์‹คํ–‰ํ•ด๋ณด์ง€ ์•Š์Œ. โ€ข bool result = bool1 || bool2 || (i > 7) || (27 / 13 % i + 1) < 2; โ€ข bool1์ด ์ฐธ์œผ๋กœ ํŒ๋ช…๋˜์—ˆ๋‹ค๋ฉด ์ „์ฒด ๊ฒฐ๊ณผ๋Š” ๋ฌด์กฐ๊ฑด ์ฐธ์ด ๋˜๋ฏ€๋กœ ๋‚˜๋จธ์ง€ ๋ถ€๋ถ„์˜ ๊ณ„์‚ฐ์€ ์ƒ๋žต. โ€ข ๋ถˆํ•„์š”ํ•œ ์ž‘์—…์ด ์‹คํ–‰๋˜์ง€ ์•Š๋„๋ก ์–ธ์–ด ์ฐจ์›์—์„œ ์ตœ์ ํ™”๋จ. โ€ข ํ•˜์ง€๋งŒ ํŠน์ • ํ‘œํ˜„์‹์ด ํ•จ์ˆ˜ ํ˜ธ์ถœ์„ ํฌํ•จํ•˜๋Š” ๋“ฑ, ํ›„์† ์ฝ”๋“œ์— ์˜ํ–ฅ์„ ๋ฏธ์น˜๋Š” ์ƒํƒœ ๋ณ€ํ™”๋ฅผ ์•ผ๊ธฐํ•œ๋‹ค๋ฉด ์กฐ๊ฑด์‹์˜ ์ž๋™ํ™”๋œ ์‹คํ–‰ ์ƒ๋žต์ด ์ฐพ๊ธฐ ์–ด๋ ค์šด ๋ฒ„๊ทธ๋ฅผ ๋งŒ๋“ค์–ด ๋‚ผ ์ˆ˜๋„ ์žˆ์Œ.
  • 38. WHILE ๋ฃจํ”„ โ€ข while ๋ฃจํ”„๋Š” ์ฃผ์–ด์ง„ ํ‘œํ˜„์‹์ด ์ฐธ์ธ ๋™์•ˆ while ๋ธ”๋ก์˜ ์ฝ”๋“œ๊ฐ€ ์‹คํ–‰๋˜๊ฒŒ ํ•จ. โ€ข int i = 0; while (i < 5) { std::cout << โ€œ์ด๊ฑด ์‰ฌ์šด๋ฐโ€ << std::endl; i++; } โ€ข break ํ‚ค์›Œ๋“œ๋ฅผ ์ด์šฉํ•˜๋ฉด ๋ฃจํ”„์—์„œ ๋ฐ”๋กœ ๋ฒ—์–ด๋‚˜ while ๋ธ”๋ก ์ดํ›„์˜ ์ฝ”๋“œ๋กœ ์—ฐ์†ํ•ด์„œ ์‹คํ–‰ํ•˜๊ฒŒ ํ•จ. โ€ข continue ํ‚ค์›Œ๋“œ๋Š” ๋ฃจํ”„ ๋ธ”๋ก ๋‚ด์—์„œ ํ•ด๋‹น ํ‚ค์›Œ๋“œ ์•„๋ž˜์ชฝ ์ฝ”๋“œ๋ฅผ ์‹คํ–‰ํ•˜์ง€ ์•Š๊ณ  ๋ฐ”๋กœ ๋ฃจํ”„์˜ ์ฒ˜์Œ์œผ๋กœ ๋Œ์•„๊ฐ€์„œ ๋‹ค์‹œ ์‹คํ–‰ํ•˜๊ฒŒ ํ•จ.
  • 39. DO/WHILE ๋ฃจํ”„ โ€ข do / while ๋ฃจํ”„๋Š” while ๋ฃจํ”„์˜ ํŒŒ์ƒํ˜•์œผ๋กœ while ๋ฃจํ”„์™€ ๋น„์Šทํ•จ. โ€ข ๋‹จ, while ๋ธ”๋ก์˜ ์ฝ”๋“œ๊ฐ€ ์ฒ˜์Œ ํ•œ ๋ฒˆ์€ ๋ฌด์กฐ๊ฑด ์‹คํ–‰๋˜๊ณ  ๋‚˜์„œ ๋ฃจํ”„ ๋ฐ˜๋ณต ์—ฌ๋ถ€๋ฅผ ์ฒดํฌํ•œ๋‹ค๋Š” ์ ์ด ๋‹ค๋ฆ„. โ€ข ์ฒซ ๋ฒˆ์งธ ์‹คํ–‰์ด ๋ฌด์กฐ๊ฑด ๋ฐœ์ƒํ•ด์•ผ ํ•˜๋Š” ์ƒํ™ฉ์—์„œ ์ฒซ ๋ฒˆ์งธ ๋น„๊ต๋ฌธ์˜ ๋ถˆํ•„์š”ํ•œ ์‹คํ–‰์„ ์ œ๊ฑฐํ•ด์ฃผ๋Š” ํšจ๊ณผ. โ€ข int i = 100; do { std::cout << โ€œ์ด๊ฑด ์‰ฌ์šด๋ฐโ€ << std::endl; i++; } while (i < 5);
  • 40. FOR ๋ฃจํ”„ โ€ข for ๋ฃจํ”„์™€ while ๋ฃจํ”„๋Š” ์ƒํ˜ธ ๋ณ€ํ™˜์ด ๊ฐ€๋Šฅ. โ€ข for ๋ฃจํ”„๋Š” ์‹œ์ž‘ ์กฐ๊ฑด, ์ค‘๋‹จ ์กฐ๊ฑด ๊ทธ๋ฆฌ๊ณ  ๋ฃจํ”„ ๋งˆ์ง€๋ง‰์— ๋ฐ˜๋ณต ์ˆ˜ํ–‰ํ•  ์ฝ”๋“œ๋ฅผ ์ง€์ •ํ•  ์ˆ˜ ์žˆ์Œ. โ€ข for (int i = 0; i < 5; i++) { std::cout << โ€œ์ด๊ฑด ์‰ฌ์šด๋ฐโ€ << std::endl; } โ€ข while ๋ฃจํ”„์™€ ํ•˜๋Š” ์ผ์€ ๊ฐ™์ง€๋งŒ ์‹œ์ž‘ ์กฐ๊ฑด, ์ค‘๋‹จ ์กฐ๊ฑด, ๋ฃจํ”„ ๋ฐ˜๋ณต ์ฝ”๋“œ๊ฐ€ ํ•œ ์ค„์— ์ผ๋ชฉ์š”์—ฐํ•˜๊ฒŒ ํ‘œ์‹œ๋˜๋ฏ€๋กœ ์–ด๋–ค ๊ฐœ๋ฐœ์ž์—๊ฒŒ๋Š” ๊ฐ€๋…์„ฑ์ด ํ›จ์”ฌ ๋” ์ข‹์„ ์ˆ˜ ์žˆ์Œ.
  • 41. [C++ 11] ๊ตฌ๊ฐ„ ์ง€์ • ๋ฃจํ”„ โ€ข ๊ตฌ๊ฐ„ ์ง€์ • for ๋ฃจํ”„๋Š” C++ 11์—์„œ ์ƒˆ๋กœ ๋„์ž…๋œ ๋ฐ˜๋ณต๋ฌธ. โ€ข ๋ฆฌ์ŠคํŠธ๋ฅผ ์ˆœํšŒํ•˜๋ฉฐ ์ž‘์—…ํ•  ๋•Œ ํŽธ๋ฆฌํ•จ. โ€ข ๋ฐฐ์—ด๊ณผ ์ดˆ๊ธฐํ™” ๋ฆฌ์ŠคํŠธ, ๋ฐ˜๋ณต์ž๋ฅผ ๋ฆฌํ„ดํ•˜๋Š” begin() / end() ํ•จ์ˆ˜๋ฅผ ๋ฉค๋ฒ„๋กœ ๊ฐ€์ง„ ๋ฐ์ดํ„ฐ ํƒ€์ž…์ด ์ฃผ ๋Œ€์ƒ. โ€ข int arr[] = {1, 2, 3, 4}; for (auto& i : arr) { i += 2; }
  • 42. ๋ฐฐ์—ด โ€ข ๋ฐฐ์—ด์€ ๊ฐ™์€ ๋ฐ์ดํ„ฐ ํƒ€์ž…์˜ ๊ฐ’๋“ค์„ ์ผ๋ ฌ๋กœ ๋‚˜์—ดํ•œ ๊ฒƒ. โ€ข C++์—์„œ ๋ฐฐ์—ด์„ ์„ ์–ธํ•  ๋•Œ๋Š” ๋ฐฐ์—ด์˜ ํฌ๊ธฐ๋ฅผ ๋ช…์‹œ์ ์œผ๋กœ ์„ค์ •ํ•ด์•ผ ํ•จ. โ€ข ๋ณ€์ˆ˜๋ฅผ ์ด์šฉํ•˜๋”๋ผ๋„ const ๋ณ€์ˆ˜์—ฌ์•ผ ํ•จ. โ€ข C++ 11์—์„œ๋Š” ์ด๋Ÿฌํ•œ ์กฐ๊ฑด์„ ์•ฝ๊ฐ„ ์™„ํ™”ํ•˜์—ฌ ์ƒ์ˆ˜ ํ‘œํ˜„์‹(constexpr)์„ ๋ฐฐ์—ด ํฌ๊ธฐ ์„ ์–ธ์— ์ด์šฉํ•  ์ˆ˜ ์žˆ์Œ. โ€ข int myArray[10]; for (int i = 0; i < 10; i++) { myArray[i] = 0; } โ€ข int myArray[10] = {0}; โ€ข C++ ๋ฐฐ์—ด์˜ ์ฒซ ๋ฒˆ์งธ ํ•ญ๋ชฉ์€ ์–ธ์ œ๋‚˜ 0๋ฒˆ์งธ์— ์œ„์น˜. โ€ข ๋งˆ์ง€๋ง‰ ํ•ญ๋ชฉ์˜ ์œ„์น˜๋„ ๋ฐฐ์—ด ํฌ๊ธฐ์˜ โ€“ 1์ž„์— ์ฃผ์˜ํ•ด์•ผ ํ•จ.
  • 43. [C++ 11] STD::ARRAY โ€ข C++ 11์—์„œ๋Š” std::array๋ผ๋Š” ์ƒˆ๋กœ์šด ํ˜•ํƒœ์˜ ์ปจํ…Œ์ด๋„ˆ๋ฅผ ๋„์ž…. โ€ข <array> ํ—ค๋”์— ์ •์˜๋˜์–ด ์žˆ์Œ. โ€ข std::array๋Š” C์–ธ์–ด ๋ฐฐ์—ด์„ ๋Œ€์ฒดํ•˜๋Š” ์•ˆ์ „ํ•œ(๋ฒ”์œ„๋ฅผ ๋ฒ—์–ด๋‚œ ์ž˜๋ชป๋œ ๋ฉ”๋ชจ๋ฆฌ ์ž‘์—…์˜ ์œ„ํ—˜์ด ์—†๋Š”) ๋ฐฐ์—ด ํƒ€์ž…. โ€ข std::array๋Š” std::vector์™€ ๋‹ฌ๋ฆฌ ํฌ๊ธฐ๊ฐ€ ๊ณ ์ •๋˜์–ด ์žˆ์–ด ์ƒˆ๋กœ ํ•ญ๋ชฉ์„ ์ถ”๊ฐ€ํ•˜๊ฑฐ๋‚˜ ์‚ญ์ œํ•  ์ˆ˜ ์—†์ง€๋งŒ ์˜ค๋ฒ„ํ—ค๋“œ๊ฐ€ ์ ์€ ์žฅ์ . โ€ข ๋ฐฐ์—ด์˜ ํฌ๊ธฐ๋ฅผ ํ•ญ์ƒ ์ •ํ™•ํ•˜๊ฒŒ ์•Œ ์ˆ˜ ์žˆ๊ณ , ํฌ์ธํ„ฐ๊ฐ€ ์ž๋™์œผ๋กœ ์ž˜๋ชป ํƒ€์ž… ์บ์ŠคํŒ…๋˜๋Š” ๊ฒƒ๋„ ํ”ผํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ C++ STL์˜ ๋ฐ˜๋ณต์ž๋ฅผ ํ™œ์šฉํ•˜์—ฌ ํ•ญ๋ชฉ์„ ์ˆœํšŒํ•˜๊ฑฐ๋‚˜ STL ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ์ด์šฉํ•  ์ˆ˜๋„ ์žˆ์Œ.
  • 44. [C++ 11] STD::ARRAY โ€ข #include <iostream> #include <array> using namespace std; int main() { array<int, 3> arr = {9, 8, 7}; cout << โ€œArray size = โ€œ << arr.size() << endl; for (auto i : arr) { cout << i << endl; } return 0; }
  • 45. ํ•จ์ˆ˜ โ€ข ํ”„๋กœ๊ทธ๋žจ์˜ ํฌ๊ธฐ๊ฐ€ ์ปค์ง€๋ฉด main() ํ•จ์ˆ˜์— ๋ชจ๋“  ์ฝ”๋“œ๋ฅผ ๋‹ด์„ ์ˆ˜ ์—†์Œ. โ€ข ํšจ๊ณผ์ ์œผ๋กœ ๊ด€๋ฆฌํ•˜๋ ค๋ฉด ์ดํ•ดํ•˜๊ธฐ ์‰ฌ์šด ์˜๋ฏธ ๋‹จ์œ„๋กœ ์ชผ๊ฐœ์–ด ํ•จ์ˆ˜๋“ค๋กœ ์ •๋ฆฌํ•ด์•ผ ํ•จ. โ€ข ๋‹ค๋ฅธ ์ฝ”๋“œ์—์„œ ํ•จ์ˆ˜๋ฅผ ์ด์šฉํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” ํ•จ์ˆ˜๋ฅผ ์„ ์–ธํ•ด์•ผ ํ•จ. โ€ข ํ•จ์ˆ˜๊ฐ€ ํŠน์ • ์†Œ์Šค ํŒŒ์ผ ์•ˆ์—์„œ๋งŒ ์ด์šฉ๋œ๋‹ค๋ฉด ๋ณดํ†ต ๊ทธ ํŒŒ์ผ ์•ˆ์—์„œ ์„ ์–ธ๊ณผ ์ •์˜๋ฅผ ๋ชจ๋‘ ํ•˜๊ฒŒ ๋จ. โ€ข ๋‹ค๋ฅธ ๋ชจ๋“ˆ์˜ ์†Œ์Šค ํŒŒ์ผ์—์„œ ์ด์šฉ๋œ๋‹ค๋ฉด ํ•จ์ˆ˜ ์„ ์–ธ์€ ํ—ค๋” ํŒŒ์ผ์— ์œ„์น˜์‹œํ‚ค๊ณ  ํ•จ์ˆ˜ ์ •์˜๋Š” ์†Œ์Šค ํŒŒ์ผ์— ๋‘๊ฒŒ ๋จ. โ€ข ํ•จ์ˆ˜ ์„ ์–ธ์˜ ์˜ˆ : void myFunction(int i, char c); โ€ข ๋ฆฌํ„ด ํƒ€์ž…์ด void์ด๋ฏ€๋กœ ํ˜ธ์ถœ์ž์—๊ฒŒ ์•„๋ฌด๋Ÿฐ ๊ฒฐ๊ณผ๋„ ๋Œ๋ ค์ฃผ์ง€ ์•Š์Œ. โ€ข ํ•จ์ˆ˜ ํŒŒ๋ผ๋ฏธํ„ฐ๋กœ int์™€ char๊ฐ€ ์„ ์–ธ๋˜์–ด ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ํ•จ์ˆ˜๋ฅผ ํ˜ธ์ถœํ•  ๋•Œ๋Š” ๋‘ ๊ฐ’์„ ๊ผญ ์ž…๋ ฅํ•ด์•ผ ํ•จ.
  • 46. ํ•จ์ˆ˜ โ€ข ํ•จ์ˆ˜ ์„ ์–ธ๋ถ€์™€ ํ•จ์ˆ˜ ์ •์˜๋ถ€๊ฐ€ ๊ฐ™์ง€ ์•Š์œผ๋ฉด ํ•ด๋‹น ํ•จ์ˆ˜๋ฅผ ์ฐพ์ง€ ๋ชปํ•˜์—ฌ ์ปดํŒŒ์ผ๋Ÿฌ์˜ ๋งํฌ ๋‹จ๊ณ„์—์„œ ์—๋Ÿฌ ๋ฐœ์ƒ. โ€ข void myFunction(int i, char c) { std::cout << โ€œthe value of i is โ€œ << i << std::endl; std::cout << โ€œthe value of c is โ€œ << c << std::endl; } โ€ข ์œ„ ํ•จ์ˆ˜๋ฅผ ํ˜ธ์ถœํ•  ๋•Œ๋Š” int์™€ char ํƒ€์ž…์˜ ๋‘ ํŒŒ๋ผ๋ฏธํ„ฐ๋ฅผ ์ž…๋ ฅํ•จ. โ€ข myFunction(8, โ€˜aโ€™); โ€ข myFunction(someInt, โ€˜bโ€™); โ€ข myFunction(5, someChar);
  • 47. ํ•จ์ˆ˜ โ€ข ํ˜ธ์ถœ์ž์—๊ฒŒ ๋ฆฌํ„ด๊ฐ’์„ ๋„˜๊ฒจ ์ค„ ๋•Œ๋Š” ๋ฆฌํ„ดํ•  ๋ฐ์ดํ„ฐ ํƒ€์ž…์„ ์„ ์–ธํ•ด ์ฃผ์–ด์•ผ ํ•จ. โ€ข int addNumbers(int number1, int number2); int addNumbers(int number1, int number2) { int result = number1 + number2; return result; } โ€ข C++ 11์—์„œ๋Š” ์ž๋™์œผ๋กœ ํ•จ์ˆ˜ ์ด๋ฆ„์„ ๋‹ด๊ณ  ์žˆ๋Š” __func__ ๋ณ€์ˆ˜๊ฐ€ ํ•จ์ˆ˜์˜ ๋กœ์ปฌ ๋ณ€์ˆ˜๋กœ์จ ์ •์˜๋จ. โ€ข static const char __func__[] = โ€œfunction-nameโ€; โ€ข std::cout << โ€œEntering Function โ€œ << __func__ << std::endl;
  • 48. ์Šคํƒ๊ณผ ํž™ โ€ข C++ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์ด ์‚ฌ์šฉํ•˜๋Š” ๋ฉ”๋ชจ๋ฆฌ๋Š” ์Šคํƒ(Stack)๊ณผ ํž™(Heap) ๋‘ ๊ฐ€์ง€๋กœ ๋‚˜๋ˆ„์–ด์ง. โ€ข ๋งŒ์•ฝ ํ˜„์žฌ ์‹คํ–‰ ์ค‘์ธ ํ•จ์ˆ˜ foo()๊ฐ€ ๋˜ ๋‹ค๋ฅธ ํ•จ์ˆ˜ bar()๋ฅผ ํ˜ธ์ถœํ•œ๋‹ค๋ฉด ์ƒˆ๋กœ์šด ์Šคํƒ ํ”„๋ ˆ์ž„์ด ์ƒ์„ฑ๋˜๊ณ  bar() ํ•จ์ˆ˜๋ฅผ ํ˜ธ์ถœํ•  ๋•Œ ๋„˜๊ฒจ์ง„ ํŒŒ๋ผ๋ฏธํ„ฐ๋“ค์ด foo()์˜ ์Šคํƒ ํ”„๋ ˆ์ž„์—์„œ ๋ณต์ œ๋˜์–ด ์ƒˆ๋กœ ์ƒ์„ฑ๋œ bar()์˜ ์Šคํƒ ํ”„๋ ˆ์ž„์— ์˜ฎ๊ฒจ์ง. โ€ข ์Šคํƒ ํ”„๋ ˆ์ž„์€ ๊ฐ ํ•จ์ˆ˜ ๊ฐ„ ๋ฉ”๋ชจ๋ฆฌ ๊ณต๊ฐ„์„ ๊ฒฉ๋ฆฌ์‹œํ‚ค๋Š” ์ค‘์š”ํ•œ ์—ญํ• ์„ ํ•จ. โ€ข โ€ข โ€ข ์˜ˆ๋ฅผ ๋“ค์–ด foo() ํ•จ์ˆ˜์˜ ๋กœ์ปฌ ๋ณ€์ˆ˜๋“ค์€ bar() ํ•จ์ˆ˜๊ฐ€ ํ˜ธ์ถœ๋˜๋Š” ๋™์•ˆ ๋ฐ”๋€Œ์ง€ ์•Š์Œ(๋‹จ, ๋ช…์‹œ์ ์œผ๋กœ bar() ํ•จ์ˆ˜์— ํ•ด๋‹น ๋ณ€์ˆ˜์˜ ๋ฉ”๋ชจ๋ฆฌ ์œ„์น˜๋ฅผ ๋„˜๊ฒจ์ฃผ๋Š” ๊ฒฝ์šฐ๋Š” ์˜ˆ์™ธ). ๊ทธ๋ฆฌ๊ณ  bar() ํ•จ์ˆ˜์˜ ์‹คํ–‰์ด ๋๋‚˜๊ณ  ํ•จ์ˆ˜๊ฐ€ ๋ฆฌํ„ดํ•˜๋ฉด bar() ํ•จ์ˆ˜์˜ ๋กœ์ปฌ ๋ณ€์ˆ˜๋“ค์€ bar()์˜ ์Šคํƒ ํ”„๋ ˆ์ž„๊ณผ ํ•จ๊ป˜ ์‚ฌ๋ผ์ง€๊ธฐ ๋•Œ๋ฌธ์— ๋”๋Š” ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ์ฐจ์ง€ํ•˜์ง€ ์•Š์Œ. ํž™ ๋ฉ”๋ชจ๋ฆฌ๋Š” ํ˜„์žฌ ์‹คํ–‰ ์ค‘์ธ ํ•จ์ˆ˜๋‚˜ ์Šคํƒ ํ”„๋ ˆ์ž„๊ณผ๋Š” ์™„์ „ํžˆ ๋…๋ฆฝ์ ์ธ ๋ฉ”๋ชจ๋ฆฌ ์˜์—ญ. โ€ข ํ•จ์ˆ˜์˜ ํ˜ธ์ถœ๊ณผ ๋ฆฌํ„ด์— ๊ด€๊ณ„์—†์ด ํ•ญ์ƒ ์กด์žฌํ•ด์•ผ ํ•˜๋Š” ๋ณ€์ˆ˜๋ผ๋ฉด ํž™์— ์œ„์น˜์‹œํ‚ค๋ฉด ๋จ.
  • 49. ๋™์  ํ• ๋‹น ๋ฐฐ์—ด โ€ข ์Šคํƒ์€ ๋™์ž‘ ๋ฐฉ์‹ ๋•Œ๋ฌธ์— ์ปดํŒŒ์ผ ์‹œ์ ์— ๊ฐ ์Šคํƒ ํ”„๋ ˆ์ž„์˜ ํฌ๊ธฐ๊ฐ€ ๊ฒฐ์ •๋˜์–ด์•ผ ํ•จ. โ€ข ์Šคํƒ ํ”„๋ ˆ์ž„์˜ ํฌ๊ธฐ๊ฐ€ ์‚ฌ์ „์— ๊ฒฐ์ •๋˜๊ธฐ ๋•Œ๋ฌธ์— ๊ฐ€๋ณ€ ํฌ๊ธฐ์˜ ๋ฐฐ์—ด์„ ํ•จ์ˆ˜์˜ ๋กœ์ปฌ ๋ณ€์ˆ˜๋กœ ์„ ์–ธํ•  ์ˆ˜ ์—†์Œ. โ€ข int arraySize = 8; int myVariableSizedArray[arraySize]; // ์ปดํŒŒ์ผ ์—๋Ÿฌ ๋ฐœ์ƒ โ€ข ๋กœ์ปฌ ๋ณ€์ˆ˜๋Š” ๋ชจ๋‘ ์Šคํƒ์— ๋“ค์–ด๊ฐ€๊ธฐ ๋•Œ๋ฌธ์— ์ •ํ™•ํ•œ ํฌ๊ธฐ๋ฅผ ์ปดํŒŒ์ผ๋Ÿฌ๊ฐ€ ์•Œ ์ˆ˜ ์žˆ์–ด์•ผ ํ•จ. โ€ข ๋ฐฐ์—ด์˜ ํฌ๊ธฐ๋ฅผ ์‹คํ–‰ ์‹œ์ ์— ๋™์ ์œผ๋กœ ๊ฒฐ์ •ํ•ด์•ผ ํ•œ๋‹ค๋ฉด ๋™์  ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ์ด์šฉํ•ด ์Šคํƒ ๋Œ€์‹  ํž™์— ๋ฐฐ์—ด์„ ์œ„์น˜์‹œํ‚ด.
  • 50. ๋™์  ํ• ๋‹น ๋ฐฐ์—ด โ€ข ๋™์  ๋ฐฐ์—ด์„ ํ• ๋‹นํ•  ๋•Œ๋Š” ํฌ์ธํ„ฐ ๋ณ€์ˆ˜๋ฅผ ์„ ์–ธ. โ€ข int* myVariableSizedArray; โ€ข int ํ‚ค์›Œ๋“œ ๋’ค์— ๋ถ™์€ * ํ‘œ์‹œ๋Š” ํ•ด๋‹น ๋ณ€์ˆ˜๊ฐ€ int ํƒ€์ž… ๋ฐ์ดํ„ฐ์— ๋Œ€ํ•œ ํž™ ๋ฉ”๋ชจ๋ฆฌ ์ฃผ์†Œ ๊ฐ’์ž„์„ ๋‚˜ํƒ€๋ƒ„. โ€ข ํฌ์ธํ„ฐ๋Š” ํ• ๋‹น๋œ ํž™ ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ๊ฐ€๋ฆฌํ‚ค๋Š” ํ™”์‚ดํ‘œ๋กœ ์ดํ•ดํ•  ์ˆ˜ ์žˆ์Œ. โ€ข ํฌ์ธํ„ฐ๋ฅผ ์ดˆ๊ธฐํ™”ํ•˜๋ ค๋ฉด ๋‹ค์Œ๊ณผ ๊ฐ™์ด new ๋ช…๋ น์„ ์ด์šฉํ•จ. โ€ข myVariableSizedArray = new int[arraySize]; โ€ข new ๋ช…๋ น์€ ํŒŒ๋ผ๋ฏธํ„ฐ arraySize๋งŒํผ ํž™ ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ํ™•๋ณดํ•˜์—ฌ ๊ทธ ์ฃผ์†Œ ๊ฐ’์„ ํฌ์ธํ„ฐ ๋ณ€์ˆ˜์— ๋Œ€์ž…ํ•ด์คŒ. โ€ข ๋™์ ์œผ๋กœ ํ• ๋‹น๋œ ๋ฐฐ์—ด์„ ๋”๋Š” ์‚ฌ์šฉํ•˜์ง€ ์•Š๋Š”๋‹ค๋ฉด ๋ช…์‹œ์ ์œผ๋กœ ํž™ ๋ฉ”๋ชจ๋ฆฌ์—์„œ ํ•ด์ œํ•ด์•ผ ํ•จ. โ€ข delete [] myVariableSizedArray;
  • 51. ๋™์  ํ• ๋‹น ๋ฐฐ์—ด โ€ข C++์˜ new์™€ delete ๋ช…๋ น์€ C์—์„œ์˜ malloc(), free()์™€ ์œ ์‚ฌ. โ€ข new, new []์™€ delete, delete []๋Š” ๊ฐ๊ฐ ์ง์„ ๋งž์ถฐ์„œ ์‚ฌ์šฉํ•ด์•ผ ํ•จ. โ€ข new []๋ฅผ ํ–ˆ๋‹ค๋ฉด ๋ฐ˜๋“œ์‹œ delete []๋ฅผ ์ˆ˜ํ–‰ํ•ด์•ผ ๋ฉ”๋ชจ๋ฆฌ ๋ฆญ(Memory Leak)์„ ๋ง‰์„ ์ˆ˜ ์žˆ์Œ. โ€ข ๋ฉ”๋ชจ๋ฆฌ ๋ฌธ์ œ๋ฅผ ํ”ผํ•˜๊ณ  ์‹ถ๋‹ค๋ฉด ์Šค๋งˆํŠธ ํฌ์ธํ„ฐ๋ฅผ ์‚ฌ์šฉ. โ€ข ์Šค๋งˆํŠธ ํฌ์ธํ„ฐ๋Š” ํ•ด๋‹น ๊ฐ์ฒด์— ๋Œ€ํ•œ ์ฐธ์กฐ ์Šค์ฝ”ํ”„๊ฐ€ ๋ฒ—์–ด๋‚˜๋ฉด ์ž๋™์œผ๋กœ ๋ฉ”๋ชจ๋ฆฌ ํ•ด์ œ๊ฐ€ ์ˆ˜ํ–‰๋จ. โ€ข <memory> ํ—ค๋”์— ์ •์˜๋œ C++ 11์˜ unique_ptr์„ ์‚ฌ์šฉ. โ€ข unique_ptr<int[]> myVariableSizedArray(new int[arraySize]); โ€ข unique_ptr๋Š” ํ•ด๋‹น ๋ฉ”๋ชจ๋ฆฌ๊ฐ€ ์Šค์ฝ”ํ”„์—์„œ ๋ฒ—์–ด๋‚  ๋•Œ ์ž๋™์œผ๋กœ ๋ฉ”๋ชจ๋ฆฌ ํ•ด์ œ๋ฅผ ์ˆ˜ํ–‰.
  • 52. ํฌ์ธํ„ฐ์˜ ์ด์šฉ โ€ข ์–ด๋– ํ•œ ๋ณ€์ˆ˜๋“  ํž™ ๋ฉ”๋ชจ๋ฆฌ์— ํ• ๋‹นํ•  ์ˆ˜ ์žˆ์Œ. โ€ข int* myIntegerPointer = new int; โ€ข ์—ฌ๊ธฐ์„œ ํฌ์ธํ„ฐ๋Š” ์ •์ˆ˜ ๋ณ€์ˆ˜ ๋‹จ ํ•˜๋‚˜๊ฐ€ ์œ„์น˜ํ•œ ์ฃผ์†Œ๋ฅผ ๊ฐ€๋ฆฌํ‚ด. โ€ข ๋ณ€์ˆซ๊ฐ’์— ์ ‘๊ทผํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” ํฌ์ธํ„ฐ๋ฅผ ์—ญ์ฐธ์กฐ(Dereference)ํ•ด์•ผ ํ•จ. โ€ข *myIntegerPointer = 8; โ€ข ํฌ์ธํ„ฐ ์ž์ฒด๋Š” ๋ฐ”๋€Œ์ง€ ์•Š๊ณ  ๊ทธ ํฌ์ธํ„ฐ๊ฐ€ ๊ฐ€๋ฆฌํ‚ค๋Š” ๋ฉ”๋ชจ๋ฆฌ์˜ ๊ฐ’์ด ๋ฐ”๋€Œ๋Š” ๊ฒƒ. โ€ข ํฌ์ธํ„ฐ๊ฐ€ ํ•ญ์ƒ ํž™ ๋ฉ”๋ชจ๋ฆฌ๋งŒ ๊ฐ€๋ฆฌํ‚ค๋Š” ๊ฒƒ์€ ์•„๋‹˜. โ€ข ์Šคํƒ์„ ๊ฐ€๋ฆฌํ‚ฌ ์ˆ˜๋„ ์žˆ๊ณ  ์‹ฌ์ง€์–ด ๋˜ ๋‹ค๋ฅธ ํฌ์ธํ„ฐ๋ฅผ ๊ฐ€๋ฆฌํ‚ฌ ์ˆ˜๋„ ์žˆ์Œ. โ€ข ๋ณ€์ˆ˜๋กœ๋ถ€ํ„ฐ ํฌ์ธํ„ฐ๋ฅผ ์–ป์„ ๋•Œ๋Š” ์ฃผ์†Œ ์ฐธ์กฐ ์—ฐ์‚ฐ์ž &๋ฅผ ์ด์šฉ. โ€ข int i = 9; int* myIntegerPointer = &i; // ์ˆซ์ž 8์„ ๊ฐ’์œผ๋กœ ๊ฐ€์ง„ ๋ณ€์ˆ˜์˜ ํฌ์ธํ„ฐ ๋ณ€์ˆ˜
  • 53. ํฌ์ธํ„ฐ์˜ ์ด์šฉ โ€ข ํฌ์ธํ„ฐ๋กœ ๊ตฌ์กฐ์ฒด๋ฅผ ์ฐธ์กฐํ•  ๋•Œ๋Š” ํŠน๋ณ„ํ•œ ๋ฌธ๋ฒ•์„ ์‚ฌ์šฉ. โ€ข ๊ฐ’์— ์ ‘๊ทผํ•˜๊ธฐ ์œ„ํ•ด ์ƒˆ ์—ญ์ฐธ์กฐ ์—ฐ์‚ฐ์ž *๋ฅผ ํฌ์ธํ„ฐ์— ๋ถ™์ด๊ณ , ์ด๋ ‡๊ฒŒ ์—ญ์ฐธ์กฐ๋œ ๋ณ€์ˆ˜์— .์„ ๋ถ™์—ฌ์„œ ๊ตฌ์กฐ์ฒด ๋‚ด ๊ฐ ํ•„๋“œ๋ฅผ ์„ ํƒ. โ€ข โ€ข EmployeeT* anEmployee = getEmployee(); cout << (*anEmployee).salary << endl; ๊ตฌ์กฐ์ฒด ์—ญ์ฐธ์กฐ ์—ฐ์‚ฐ์ž ->๋ฅผ ์ด์šฉํ•˜๋ฉด ์—ญ์ฐธ์กฐ์™€ ํ•„๋“œ ์ ‘๊ทผ์„ ํ•œ ๋ฒˆ์— ํ•  ์ˆ˜ ์žˆ์Œ. โ€ข EmployeeT* anEmployee = getEmployee(); cout << anEmployee->salary << endl;
  • 54. ํฌ์ธํ„ฐ์˜ ์ด์šฉ โ€ข ๊ฐ’์— ์˜ํ•œ ์ „๋‹ฌ(Passing by Value) : ํ•จ์ˆ˜๋ฅผ ํ˜ธ์ถœํ•˜๋ฉด์„œ ํŒŒ๋ผ๋ฏธํ„ฐ ์ „๋‹ฌ์„ ์œ„ํ•ด ๋ณ€์ˆ˜๋ฅผ ์ธ์ž๋กœ ์ด์šฉํ•  ๋•Œ ํ•ด๋‹น ๋ณ€์ˆ˜์˜ ์ฃผ์†Œ๊ฐ€ ์•„๋‹Œ ๊ฐ’์„ ๋„˜๊ธฐ๊ฒŒ ๋จ. โ€ข ์˜ˆ๋ฅผ ๋“ค์–ด ์–ด๋–ค ํ•จ์ˆ˜๊ฐ€ ์ •์ˆ˜ ๊ฐ’์„ ํŒŒ๋ผ๋ฏธํ„ฐ๋กœ ๋ฐ›๊ณ , ํ•จ์ˆ˜ ํ˜ธ์ถœ ์‹œ ์ •์ˆ˜ ๋ณ€์ˆ˜๋ฅผ ์ธ์ž๋กœ ๋„˜๊ฒผ๋‹ค๋ฉด ํ•ด๋‹น ๋ณ€์ˆ˜์˜ ๊ฐ’์„ ๋ณต์‚ฌํ•˜์—ฌ ํ•จ์ˆ˜ ์Šคํƒ ํ”„๋ ˆ์ž„ ์•ˆ์˜ ํŒŒ๋ผ๋ฏธํ„ฐ ์˜์—ญ์— ์œ„์น˜์‹œํ‚ด. โ€ข ์ฐธ์กฐ์— ์˜ํ•œ ์ „๋‹ฌ(Passing by Reference) : ํฌ์ธํ„ฐ๋ฅผ ์ธ์ž๋กœ ์ „๋‹ฌํ•˜๋ฉด ์Šคํƒ ํ”„๋ ˆ์ž„ ์•ˆ์— ๋ณต์‚ฌ๋˜์–ด ์ €์žฅ๋˜๋Š” ๊ฒƒ์ด ๋ณ€์ˆ˜์˜ ๊ฐ’์ด ์•„๋‹Œ ๋ณ€์ˆ˜์˜ ์ฃผ์†Œ๊ฐ€ ๋˜๊ธฐ ๋•Œ๋ฌธ์— ๊ทธ ์ฃผ์†Œ๋ฅผ ์—ญ์ฐธ์กฐ ํ•จ์œผ๋กœ์„œ ์Šคํƒ ํ”„๋ ˆ์ž„ ๋ฐ–์— ์žˆ๋Š” ๋ณ€์ˆ˜์˜ ๊ฐ’์„ ๋ณ€๊ฒฝํ•˜๋Š” ๊ฒƒ์ด ๊ฐ€๋Šฅ. โ€ข C++์—์„œ๋Š” ์ฐธ์กฐํ˜• ๋ณ€์ˆ˜๋ผ๋Š” ๋” ์ข‹์€ ๋ฐฉ์‹์„ ์ง€์›ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ํฌ์ธํ„ฐ๋ฅผ ํ†ตํ•œ ์šฐํšŒ์ ์ธ ๋ฐฉ๋ฒ•์„ ์‚ฌ์šฉํ•˜์ง€ ์•Š์•„๋„ ๋จ.
  • 55. C ์–ธ์–ด์˜ ๋ฌธ์ž์—ด โ€ข C++์—์„œ ๋ฌธ์ž์—ด์„ ๋‹ค๋ฃจ๋Š” ๋‘ ๊ฐ€์ง€ ๋ฐฉ๋ฒ•. โ€ข 1. ๊ธฐ์กด C ์–ธ์–ด์—์„œ์™€ ๊ฐ™์ด ๋ฌธ์ž(char)์˜ ๋ฐฐ์—ด๋กœ ์ด์šฉํ•˜๋Š” ๊ฒƒ. โ€ข 2. C++์—์„œ ์ œ๊ณตํ•˜๋Š” string ํƒ€์ž…์„ ์ด์šฉํ•˜๋Š” ๊ฒƒ. โ€ข โ€œHello, Worldโ€์™€ ๊ฐ™์€ ๋ฌธ์ž์—ด์€ ๋‚ด๋ถ€์ ์œผ๋กœ ๋„ ๋ฌธ์ž(Null Character) โ€˜0โ€™์ด ๋งˆ์ง€๋ง‰์— ์ถ”๊ฐ€๋œ ๋ฌธ์ž(char) ํƒ€์ž…์˜ ๋ฐฐ์—ด๋กœ ์ฒ˜๋ฆฌ๋จ. โ€ข char arrayString[20] = โ€œHello, Worldโ€; const char* pointerString = โ€œHello, Worldโ€;
  • 56. C++ ์–ธ์–ด์˜ ๋ฌธ์ž์—ด โ€ข C++์—์„œ๋Š” string ํƒ€์ž…์„ ์ง€์›ํ•˜์—ฌ ํ›จ์”ฌ ๋” ์œ ์—ฐํ•˜๊ฒŒ ๋ฌธ์ž์—ด์„ ์ด์šฉํ•  ์ˆ˜ ์žˆ์Œ. โ€ข <string> ํ—ค๋”์— ์ •์˜๋˜์–ด ์žˆ๊ณ  ๊ธฐ๋ณธ ํƒ€์ž…์œผ๋กœ์จ ์ด์šฉ๋˜๋ฉฐ std ๋„ค์ž„์ŠคํŽ˜์ด์Šค ์•„๋ž˜์— ์ •์˜๋˜์–ด ์žˆ์Œ. โ€ข string myString = โ€œHello, Worldโ€; cout << โ€œThe value of myString is โ€œ << myString << endl; โ€ข C++ string ํƒ€์ž…์„ ์ด์šฉํ•˜๋ฉด ์ผ๋ฐ˜์ ์ธ ์—ฐ์‚ฐ์ž๋กœ ๋ฌธ์ž์—ด์„ ์กฐ์ž‘ํ•  ์ˆ˜ ์žˆ์Œ. โ€ข ์˜ˆ๋ฅผ ๋“ค์–ด ๋ฌธ์ž์—ด์„ ํ•ฉ์น  ๋•Œ C์—์„œ๋Š” strcat() ํ•จ์ˆ˜๋ฅผ ์ด์šฉํ–ˆ์ง€๋งŒ, string ํƒ€์ž… ๋ฌธ์ž์—ด์€ + ์—ฐ์‚ฐ์ž๋ฅผ ์ด์šฉ. โ€ข ๊ทธ๋ฆฌ๊ณ  C์—์„œ๋Š” ๋ฌธ์ž์—ด ๋น„๊ต์— ==๋ฅผ ์ด์šฉํ•˜๋ฉด ๋ฌธ์ž์—ด ์ž์ฒด๊ฐ€ ์•„๋‹Œ ์ฃผ์†Œ ๊ฐ’์„ ๋น„๊ตํ•˜๊ฒŒ ๋˜์–ด ์˜๋„ํ•œ ๊ฒฐ๊ณผ๋ฅผ ์–ป์„ ์ˆ˜ ์—†์ง€๋งŒ string ํƒ€์ž… ๋ฌธ์ž๋Š” == ์—ฐ์‚ฐ์ž๋ฅผ ์ด์šฉํ•˜์—ฌ ๋ฌธ์ž์—ด ๋น„๊ต๋ฅผ ํ•  ์ˆ˜ ์žˆ์Œ.
  • 57. C++ ์–ธ์–ด์˜ ๋ฌธ์ž์—ด โ€ข string str1 = โ€œHelloโ€; string str2 = โ€œWorldโ€; string str3 = str1 + โ€œ โ€œ + str2; cout << โ€œstr1 is โ€œ << str1 << endl; cout << โ€œstr2 is โ€œ << str2 << endl; cout << โ€œstr3 is โ€œ << str3 << endl; if (str3 == โ€œHello Worldโ€) { cout << โ€œstr3 is what it should be.โ€ << endl; } else { cout << โ€œHmmm . . . str3 isnโ€™t what it should be.โ€ << endl; }
  • 58. ์ฐธ์กฐํ˜• โ€ข ํ•จ์ˆ˜์˜ ์ „ํ˜•์ ์ธ ํŒจํ„ด์€ 0๊ฐœ๋‚˜ 1๊ฐœ ์ด์ƒ์˜ ํŒŒ๋ผ๋ฏธํ„ฐ๋ฅผ ๋ฐ›์•„ ๊ณ„์‚ฐํ•˜๊ณ  ํ•˜๋‚˜์˜ ๊ฒฐ๊ณผ ๊ฐ’์„ ๋ฆฌํ„ดํ•˜๋Š” ๊ฒƒ. โ€ข ํ•˜์ง€๋งŒ ๋ฆฌํ„ดํ•˜๊ณ  ์‹ถ์€ ๊ฒฐ๊ณผ ๊ฐ’์ด 2๊ฐœ ์ด์ƒ์ผ ์ˆ˜๋„ ์žˆ๊ณ  ํŒŒ๋ผ๋ฏธํ„ฐ๋กœ ๋„˜๊ฒจ์ง„ ๋ณ€์ˆ˜๋ฅผ ํ•จ์ˆ˜์—์„œ ๋ณ€๊ฒฝํ•ด์ฃผ๊ธธ ์›ํ•  ์ˆ˜๋„ ์žˆ์Œ. โ€ข ์ด๋Ÿฐ ๊ฒฝ์šฐ C์—์„œ๋Š” ๋ณ€์ˆ˜ ๋Œ€์‹  ๋ณ€์ˆ˜์˜ ํฌ์ธํ„ฐ๋ฅผ ์ „๋‹ฌํ•˜์—ฌ ํ•ด๊ฒฐ. โ€ข C++์—์„œ๋Š” ํฌ์ธํ„ฐ ์—†์ด๋„ ๋ช…์‹œ์ ์œผ๋กœ ์ฐธ์กฐ์— ์˜ํ•œ ์ „๋‹ฌ์„ ์ง€์›. โ€ข ํ•จ์ˆ˜ ํŒŒ๋ผ๋ฏธํ„ฐ์˜ ์ •์˜๋ถ€์—์„œ ๊ฐ ํŒŒ๋ผ๋ฏธํ„ฐ์˜ ๋ณ€์ˆ˜ ์ด๋ฆ„ ์•ž์— & ์—ฐ์‚ฐ์ž๋ฅผ ๋ถ™์ด๋Š” ๊ฒƒ. โ€ข ์‚ฌ์šฉ๋ฒ•์€ ๋ณดํ†ต ๋ณ€์ˆ˜์™€ ๊ฐ™์ง€๋งŒ, ๋‚ด๋ถ€์ ์œผ๋กœ๋Š” ํ•จ์ˆ˜ ์•ˆ์—์„œ๋„ ํ•จ์ˆ˜ ํ˜ธ์ถœ ์‹œ ์‚ฌ์šฉ๋œ ๋ณ€์ˆ˜์˜ ํฌ์ธํ„ฐ๊ฐ€ ์‚ฌ์šฉ๋จ.
  • 59. ์ฐธ์กฐํ˜• โ€ข void addOne(int i) { i++; } // ํŒŒ๋ผ๋ฏธํ„ฐ ๋ณ€์ˆ˜์˜ ๋ณต์ œ๋ณธ์ด๊ธฐ ๋•Œ๋ฌธ์— ์›๋ž˜ ๋ณ€์ˆ˜์—๋Š” ์•„๋ฌด๋Ÿฐ ์˜ํ–ฅ์ด ์—†์Œ void addOne(int& i) { i++; } // ์›๋ณธ ํŒŒ๋ผ๋ฏธํ„ฐ ๋ณ€์ˆ˜์˜ ๊ฐ’์ด 1 ์ฆ๊ฐ€ํ•จ โ€ข ์œ„์˜ ํ•จ์ˆ˜๋ฅผ ํ˜ธ์ถœํ•  ๋•Œ๋Š” ์ •์ˆ˜ ๋ณ€์ˆ˜๋ฅผ ์‚ฌ์šฉํ•˜๊ธฐ๋งŒ ํ•œ๋‹ค๋ฉด ๋ณดํ†ต ํŒŒ๋ผ๋ฏธํ„ฐ ํ•จ์ˆ˜๋“  ์ฐธ์กฐํ˜• ํŒŒ๋ผ๋ฏธํ„ฐ ํ•จ์ˆ˜๋“  ์ฐจ์ด๊ฐ€ ์—†์Œ. โ€ข int myInt = 7; addOne(myInt); โ€ข ํŒŒ๋ผ๋ฏธํ„ฐ๊ฐ€ ๊ฐ’์œผ๋กœ ์ „๋‹ฌ๋˜๋Š” ํ•จ์ˆ˜๋Š” ์ƒ์ˆ˜ ํŒŒ๋ผ๋ฏธํ„ฐ๋ฅผ ๋„˜๊ฒจ ์ฃผ์–ด๋„ ์•„๋ฌด๋Ÿฐ ๋ฌธ์ œ๊ฐ€ ์—†์ง€๋งŒ ์ฐธ์กฐํ˜• ๋ณ€์ˆ˜๋ฅผ ๋ฐ›๋Š” ํ•จ์ˆ˜๋Š” ์ƒ์ˆ˜ ํŒŒ๋ผ๋ฏธํ„ฐ๋ฅผ ๋„˜๊ธธ ๊ฒฝ์šฐ ์ปดํŒŒ์ผ ์—๋Ÿฌ๊ฐ€ ๋ฐœ์ƒ. โ€ข ์ด๋Ÿฌํ•œ ๋ฌธ์ œ๋Š” rvalue ์ฐธ์กฐ๋กœ ํ•ด๊ฒฐํ•  ์ˆ˜ ์žˆ์Œ.
  • 60. ์˜ˆ์™ธ ์ฒ˜๋ฆฌ โ€ข C++์€ ์œ ์—ฐํ•œ ์–ธ์–ด์ด๊ธฐ๋Š” ํ•˜์ง€๋งŒ ๋”ฑํžˆ ์•ˆ์ „ํ•œ ์–ธ์–ด๋Š” ์•„๋‹˜. โ€ข ์ž‘์„ฑํ•œ ์ฝ”๋“œ๊ฐ€ ์—‰๋šฑํ•œ ๋ฉ”๋ชจ๋ฆฌ ์˜์—ญ์„ ํ—ค์ง‘๊ฑฐ๋‚˜ 0์œผ๋กœ ๋‚˜๋ˆ„๊ธฐ๋ฅผ ์‹œ๋„ํ•ด์„œ ์ปดํŒŒ์ผ๋Ÿฌ๊ฐ€ ๊ฑธ๋Ÿฌ์ฃผ์ง€ ์•Š์Œ. โ€ข C++์˜ exception์€ ์ฝ”๋“œ์˜ ์•ˆ์ „์„ฑ์„ ํ•œ ๋‹จ๊ณ„ ๋†’์ด๊ธฐ ์œ„ํ•ด ์–ธ์–ด ์ฐจ์›์—์„œ ์ œ๊ณต๋˜๋Š” ๊ธฐ๋Šฅ. โ€ข exception์—์„œ๋Š” ๋ช‡ ๊ฐ€์ง€ ์ƒˆ๋กœ์šด ์šฉ์–ด๊ฐ€ ๋„์ž…๋จ. โ€ข ํŠน์ • ์ฝ”๋“œ๊ฐ€ ์˜ˆ์™ธ์ ์ธ ์ƒํ™ฉ์„ ์ธ์ง€ํ•˜๋ฉด exception์„ ๋˜์ง(throw). โ€ข ๊ทธ๋ฆฌ๊ณ  ๋˜ ๋‹ค๋ฅธ ์ฝ”๋“œ๊ฐ€ ๋˜์ ธ์ง„ exception์„ ๋ฐ›์•„์„œ(catch) ํ•„์š”ํ•œ ๋’ค์ฒ˜๋ฆฌ๋ฅผ ํ•จ.
  • 61. ์˜ˆ์™ธ ์ฒ˜๋ฆฌ โ€ข #include <stdexcept> double divideNumbers(double inNumerator, double inDenomiator) { if (inDenominator == 0) { throw std::exception(); } return inNumerator / inDenomiator; } โ€ข throw ๊ตฌ๋ฌธ์— ์ด๋ฅด๋ฉด ๋ฆฌํ„ด๊ฐ’๋„ ์—†์ด ํ•จ์ˆ˜์˜ ์‹คํ–‰์ด ์ฆ‰์‹œ ์ค‘๋‹จ๋จ. โ€ข ํ˜ธ์ถœํ•œ ์ธก์—์„œ ์ด ํ•จ์ˆ˜๋ฅผ try / catch ๋ธ”๋ก์œผ๋กœ ๊ฐ์ŒŒ๋‹ค๋ฉด ๋˜์ ธ์ง„ exception์„ ๋ฐ›์•„์„œ ๋’ค์ฒ˜๋ฆฌ๋ฅผ ํ•˜๊ฒŒ ๋จ.
  • 62. ์˜ˆ์™ธ ์ฒ˜๋ฆฌ โ€ข #include <iostream> #include <stdexcept> int main() { try { std::cout << divideNumbers(2.5, 0.5) << std::endl; std::cout << divideNumbers(2.3, 0) << std::endl; } catch (const std::exception& exception) { std::cout << โ€œAn exception was caught!โ€ << std::endl; } return 0; }
  • 63. CONST ์ƒ์ˆ˜ โ€ข C์—์„œ๋Š” ๋ฒ„์ „ ๋„˜๋ฒ„ ๊ฐ™์ด ์‹คํ–‰๋˜๋Š” ๋™์•ˆ ์ ˆ๋Œ€ ๋ณ€ํ•˜์ง€ ์•Š๋Š” ์ƒ์ˆซ๊ฐ’์— ์ด๋ฆ„์„ ๋ถ€์—ฌํ•˜์—ฌ ํ™œ์šฉํ•  ๋•Œ #define ์ „์ฒ˜๋ฆฌ ๋งคํฌ๋กœ๋ฅผ ์ด์šฉํ–ˆ์Œ. โ€ข C++์—์„œ๋Š” #define ๋Œ€์‹  const ํ‚ค์›Œ๋“œ๋ฅผ ์ด์šฉํ•˜๋Š” ๊ฒƒ์„ ๊ถŒ์žฅ. โ€ข const๋กœ ์„ ์–ธ๋œ ๋ณ€์ˆ˜๋Š” ์ปดํŒŒ์ผ๋Ÿฌ์— ์˜ํ•ด ๋ณ€์ˆซ๊ฐ’์ด ๋ฐ”๋€Œ์ง€ ์•Š๋„๋ก ๋ณด์ฆ๋จ. โ€ข const float kVersionNumber = 2.0f; const string kProductName = โ€œSuper Hyper Net Modularโ€;
  • 64. ํŒŒ๋ผ๋ฏธํ„ฐ ๋ณดํ˜ธ๋ฅผ ์œ„ํ•œ CONST โ€ข C++์—์„œ๋Š” const๊ฐ€ ์•„๋‹Œ ๋ณ€์ˆ˜๋ฅผ const ๋ณ€์ˆ˜๋กœ ์บ์ŠคํŒ…ํ•  ์ˆ˜ ์žˆ์Œ. โ€ข ํŠน์ • ์ฝ”๋“œ๊ฐ€ ์‹คํ–‰๋˜๋Š” ๋™์•ˆ ํŠน์ • ๋ณ€์ˆ˜๋ฅผ ์ƒ์ˆ˜ํ™”ํ•˜๋ฉด ์˜๋„ํ•˜์ง€ ์•Š๊ฒŒ ๊ฐ’์ด ๋ฐ”๋€Œ๋Š” ์˜ค๋ฅ˜ ์ƒํ™ฉ์„ ์ปดํŒŒ์ผ ์‹œ์ ์— ์•Œ์•„๋‚ผ ์ˆ˜ ์žˆ์Œ. โ€ข ์˜ˆ๋ฅผ ๋“ค์–ด ์—ฌ๋Ÿฌ๋ถ„์ด ์ž‘์„ฑํ•œ ํ•จ์ˆ˜๋ฅผ ๋‹ค๋ฅธ ๋™๋ฃŒ ๊ฐœ๋ฐœ์ž๊ฐ€ ์‚ฌ์šฉํ•  ๋•Œ ํ•ด๋‹น ํ•จ์ˆ˜๊ฐ€ ์ „๋‹ฌ๋œ ํŒŒ๋ผ๋ฏธํ„ฐ์˜ ๊ฐ’์„ ๋ฌด๋‹จ์œผ๋กœ ๋ณ€๊ฒฝํ•˜์ง€ ์•Š๋Š”๋‹ค๋Š” ๊ฒƒ์„ ๋ณด์ฆํ•ด์•ผ ํ•œ๋‹ค๋ฉด const ๋ณ€์ˆ˜๊ฐ€ ํ•ด๊ฒฐ์ฑ…์ด ๋จ.
  • 65. ํŒŒ๋ผ๋ฏธํ„ฐ ๋ณดํ˜ธ๋ฅผ ์œ„ํ•œ CONST โ€ข void mysteryFunction(const char* myString); int main() { char* myString = new char[2]; myString[0] = โ€˜aโ€™; myString[1] = โ€˜0โ€™; mysteryFunction(myString); return 0; } void mysteryFunction(const char* myString) { myString[0] = โ€˜bโ€™; // const ์œ„๋ฐ˜์œผ๋กœ ์ปดํŒŒ์ผ ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ•จ } โ€ข mysteryFunction() ํ•จ์ˆ˜๋ฅผ ํ˜ธ์ถœํ•˜๋ฉด์„œ char* ๋ณ€์ˆ˜๋ฅผ const char* ํƒ€์ž…์œผ๋กœ ์ž๋™์œผ๋กœ ์บ์ŠคํŒ….
  • 66. ์ฐธ์กฐํ˜• CONST โ€ข ์ฐธ์กฐํ˜• ํƒ€์ž…์€ ํŒŒ๋ผ๋ฏธํ„ฐ ๋ณ€์ˆ˜๋ฅผ ๋ณ€๊ฒฝํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ•˜๋ ค๊ณ  ์ด์šฉํ•˜๊ธฐ์— const์˜ ์‚ฌ์šฉ์ด ์ผ๊ฒฌ ๋ชจ์ˆœ๋˜์–ด ๋ณด์ž„. โ€ข ์‚ฌ์‹ค ์ฐธ์กฐํ˜• ํŒŒ๋ผ๋ฏธํ„ฐ ๋ณ€์ˆ˜๋Š” ๋ณ€์ˆซ๊ฐ’์„ ๋ณ€๊ฒฝํ•˜๋Š” ๋ชฉ์  ์™ธ์—๋„ ์„ฑ๋Šฅ ๊ด€์ ์—์„œ ๋ถˆํ•„์š”ํ•œ ๊ฐ’์˜ ๋ณต์ œ๋ฅผ ํ”ผํ•˜๋ ค๋Š” ์˜๋„๋กœ ์ด์šฉ๋˜๋Š” ๊ฒฝ์šฐ๋„ ๋งŽ์Œ. โ€ข const์ด๋ฉด์„œ ์ฐธ์กฐํ˜•์ธ ํŒŒ๋ผ๋ฏธํ„ฐ๋ฅผ ์ด์šฉํ•จ์œผ๋กœ์จ ๊ฐ’ ๋ณต์ œ ์˜ค๋ฒ„ํ—ค๋“œ๋„ ํ”ผํ•˜๊ณ  ์ฐธ์กฐํ˜•์˜ ์œ„ํ˜‘ ์š”์†Œ์ธ ์›๋ณธ์˜ ๋ณ€์กฐ๋„ ๋ง‰๋Š”, ์–ด๋–ป๊ฒŒ ๋ณด๋ฉด ์ผ๊ฑฐ์–‘๋“์˜ ํšจ๊ณผ๋ฅผ ์–ป์Œ. โ€ข ์ฐธ์กฐํ˜• const ๋ณ€์ˆ˜๋Š” ๊ฐ์ฒด๋ฅผ ์ด์šฉํ•  ๋•Œ ๋” ์ค‘์š”ํ•จ. โ€ข ๊ฐ์ฒด๋Š” ์ •์ˆ˜ ๊ธฐ๋ณธ ํƒ€์ž…๋ณด๋‹ค ๋ฉ์น˜๋„ ํฌ๊ณ  ๋ณต์ œ ์ž‘์—… ์ž์ฒด๊ฐ€ ์˜๋„ํ•˜์ง€ ์•Š๋Š” ๋ถ€์ž‘์šฉ์„ ๋‚ณ๊ธฐ ์‰ฝ๊ธฐ ๋•Œ๋ฌธ.
  • 67. ํด๋ž˜์Šค์˜ ์„ ์–ธ โ€ข ํด๋ž˜์Šค(Class)๋Š” ๊ฐ์ฒด์˜ ํŠน์„ฑ์„ ์ •์˜. โ€ข C++์—์„œ class๋Š” ๋ณดํ†ต ํ—ค๋” ํŒŒ์ผ์—์„œ ์„ ์–ธ๋˜๊ณ  ์ƒ์„ธ ์ •์˜๋Š” ๊ด€๋ จ ์†Œ์Šค ํŒŒ์ผ์—์„œ ์ž‘์„ฑ๋จ. โ€ข ํด๋ž˜์Šค ์ •์˜๋Š” ํด๋ž˜์Šค ์ด๋ฆ„์„ ์„ ์–ธํ•˜๋Š” ๊ฒƒ์œผ๋กœ ์‹œ์ž‘. โ€ข ์ค‘๊ด„ํ˜ธ {โ€ฆ} ์•ˆ์—์„œ๋Š” ์†์„ฑ ๋ฐ์ดํ„ฐ๋ฅผ ์ €์žฅํ•  ๋ฉค๋ฒ„ ๋ณ€์ˆ˜(Data Member)๋“ค๊ณผ ํด๋ž˜์Šค์˜ ํ–‰๋™์„ ์กฐ์ •ํ•  ์ˆ˜ ์žˆ๋Š” ๋ฉ”์„œ๋“œ(Method)๋“ค์ด ์„ ์–ธ๋จ. โ€ข โ€ข ํด๋ž˜์Šค๋ช…๊ณผ ๊ฐ™์€ ์ด๋ฆ„์ด๋ฉด์„œ ๋ฆฌํ„ด๊ฐ’์ด ์—†๋Š” ๋ฉ”์„œ๋“œ๋Š” ์ƒ์„ฑ์ž(Constructor)๋ผ๊ณ  ๋ถˆ๋ฆผ. โ€ข โ€ข ๊ฐ ๋ฐ์ดํ„ฐ ๋ฉค๋ฒ„์™€ ๋ฉ”์„œ๋“œ๋“ค์€ public, protected, private ์„ธ ๊ฐ€์ง€ ์ ‘๊ทผ ๊ถŒํ•œ์— ๋งคํ•‘๋จ. ๊ฐ์ฒด๊ฐ€ ์ƒ์„ฑ๋  ๋•Œ ์ž๋™์œผ๋กœ ํ˜ธ์ถœ๋จ. ๋ฌผ๊ฒฐ ํ‘œ์‹œ(~)๋กœ ์‹œ์ž‘ํ•˜๊ณ  ํด๋ž˜์Šค๋ช…๊ณผ ๊ฐ™์€ ๋ฉ”์„œ๋“œ๋Š” ์†Œ๋ฉธ์ž(Destructor)๋ผ๊ณ  ํ•จ. โ€ข ์†Œ๋ฉธ์ž๋Š” ๊ฐ์ฒด๊ฐ€ ๋ฉ”๋ชจ๋ฆฌ์—์„œ ํ•ด์ œ๋  ๋•Œ ์ž๋™์œผ๋กœ ํ˜ธ์ถœ๋จ. โ€ข ์ƒ์ˆ˜ ๋ถˆ๋ณ€์˜ ์›์น™์ด ํ”„๋กœ๊ทธ๋žจ ์ „์ฒด์ ์œผ๋กœ ์ „ํŒŒ๋˜๊ณ  ์œ ์ง€๋˜๊ฒŒ ํ•˜๋ ค๋ฉด ๋ฉค๋ฒ„ ๋ณ€์ˆ˜์˜ ๋ณ€๊ฒฝ์ด ์—†๋Š” ๋ฉ”์„œ๋“œ๋Š” ๋ช…์‹œ์ ์œผ๋กœ const ํ‚ค์›Œ๋“œ๋กœ ์„ ์–ธํ•˜๋Š” ๊ฒƒ์ด ์ข‹์Œ. โ€ข const ๋ฉ”์„œ๋“œ๋ฅผ โ€œinspectorโ€๋ผ๊ณ  ํ•˜๊ณ  ๋ฉค๋ฒ„ ๋ณ€๊ฒฝ์ด ์žˆ๋Š” ๋ฉ”์„œ๋“œ๋Š” โ€œmutatorโ€๋ผ๊ณ  ํ•จ.
  • 68. ํ‘œ์ค€ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ โ€ข C++์—์„œ๋Š” ์œ ์šฉํ•œ ํด๋ž˜์Šค๋ฅผ ํ‘œ์ค€ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋กœ ์ œ๊ณต. โ€ข ์ค‘๋ณตํ•ด์„œ ๊ฐ™์€ ๊ธฐ๋Šฅ์˜ ํด๋ž˜์Šค๋ฅผ ๊ฐœ๋ฐœํ•˜๋Š” ๋ถ€๋‹ด์„ ํ”ผํ•  ์ˆ˜ ์žˆ์Œ. โ€ข ์˜ค๋žœ ์‹œ๊ฐ„ ๋งŽ์€ ์‚ฌ๋žŒ์œผ๋กœ๋ถ€ํ„ฐ ๊ฒ€์ฆ๋˜์—ˆ๊ธฐ ๋•Œ๋ฌธ์— ์˜ค๋ฅ˜์˜ ๊ฐ€๋Šฅ์„ฑ๋„ ์ ์Œ. โ€ข ์„ฑ๋Šฅ ์ตœ์ ํ™” ๋˜ํ•œ ์ถฉ๋ถ„ํžˆ ๋˜์–ด ์žˆ์–ด์„œ ๊ฐœ๋ฐœ์ž๊ฐ€ ์ง์ ‘ ์ž‘์„ฑํ•˜๋Š” ๊ฒƒ๋ณด๋‹ค ๋” ๋›ฐ์–ด๋‚จ.