U E D R , A S I H C RSS

AcceleratedC++/Chapter0

Chapter 0 Getting Started

์ค‘์š” ์†Œ์Šค

  • Hello World Program

~cpp 
// small C++ program
#include <iostream>

int main() {
	std::cout << "Hello, world!" << std::endl;
	return 0;
}


main ํ•จ์ˆ˜์˜ ๋ฆฌํ„ดํ˜•๊ณผ ๋ฆฌํ„ด๊ฐ’
main ํ•จ์ˆ˜์˜ ๋ฆฌํ„ดํ˜•์€ ISO/ANSI C++ ํ‘œ์ค€์—์„œ int๋กœ ์ •ํ•˜๊ณ  ์žˆ๋‹ค. ๋ฆฌํ„ด๊ฐ’์€ ํ”„๋กœ๊ทธ๋žจ์ด ์•„๋ฌด๋Ÿฐ ์—๋Ÿฌ ์—†์ด ์ข…๋ฃŒ๋˜๋Š” ๊ฒฝ์šฐ์—๋Š” 0์„ ๋ฆฌํ„ดํ•˜๋„๋ก ๋˜์–ด ์žˆ๊ณ , ์—๋Ÿฌ๊ฐ€ ๋ฐœ์ƒํ•ด์„œ ์ข…๋ฃŒํ•œ ๊ฒฝ์šฐ์—๋Š” 0 ์ด์™ธ์˜ ๊ฐ’์„ ๋ฆฌํ„ดํ•˜๋„๋ก ๋˜์–ด์žˆ๋‹ค. ์ด ๊ฐ’์€ OS๋กœ ๋Œ๋ ค์ง€๋Š” ๊ฐ’์ด๊ธฐ๋Š” ํ•˜์ง€๋งŒ OS์—์„œ ์ด๊ฒƒ์— ๋”ฐ๋ผ ํŠน๋ณ„ํžˆ ์ฒ˜๋ฆฌํ•˜๋Š” ๊ฒƒ์€ ์—†๊ธฐ ๋•Œ๋ฌธ์— ์ผ๋ฐ˜์ ์ธ ๊ฒฝ์šฐ์—๋Š” ์ด ๊ฐ’์€ ์•„๋ฌด๋Ÿฐ ์˜๋ฏธ๊ฐ€ ์—†๋‹ค. ์ด ๊ฐ’์„ ์ด์šฉํ• ์ˆ˜ ์žˆ๋Š” ๋ฐฉ๋ฒ•์œผ๋กœ๋Š” exec... ํ•จ์ˆ˜๋ฅผ ์ด์šฉํ•˜์—ฌ ํ”„๋กœ๊ทธ๋žจ์„ ์‹คํ–‰ํ•ด์ฃผ๊ณ  ๋ฐ›์•„์˜ค๋Š” ๋ฐฉ๋ฒ• ๋“ฑ์ด ์žˆ๋‹ค.

Side effect
C++์˜ ๋ชจ๋“  ๋ฌธ์žฅ(statement)์€ ๊ณ„์‚ฐ ๊ฐ€๋Šฅํ•œ ์‹์ด๋‹ค. ์ปดํŒŒ์ผ๋Ÿฌ์—์„œ ์—๋Ÿฌ๋ฅผ ์ฐพ์„๋•Œ๋„ ๊ณ„์‚ฐ ๊ฐ€๋Šฅํ•œ ์‹์ธ์ง€ ํ™•์ธํ•˜์—ฌ ๋ฌธ์žฅ์ด ์˜ฌ๋ฐ”๋ฅธ ๋ฌธ์žฅ์ธ์ง€ ์—๋Ÿฌ๋Š” ์—†๋Š”์ง€ ํ™•์ธํ•˜๊ฒŒ ๋œ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด ๋‹ค์Œ๊ณผ ๊ฐ™์€ ๋‘ ๋ฌธ์žฅ์ด ์žˆ๋‹ค๊ณ  ํ•˜์ž.
~cpp 
100;
1 + 3;
์ด๋Ÿฐ ๋ฌธ์žฅ์ด ๋“ค์–ด์žˆ๋Š” C++ ํ”„๋กœ๊ทธ๋žจ์„ ์ปดํŒŒ์ผ ํ•ด ๋ณด๋ฉด ์—๋Ÿฌ๊ฐ€ ๋‚  ๊ฒƒ ๊ฐ™์ง€๋งŒ ์—๋Ÿฌ๊ฐ€ ๋‚˜์ง€ ์•Š๋Š”๋‹ค. ์™œ๋ƒํ•˜๋ฉด ๋‘˜ ๋‹ค ๋ชจ๋‘ ๊ณ„์‚ฐ ๊ฐ€๋Šฅํ•œ ์‹์ด๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค. ๊ณ„์‚ฐ ๊ฐ€๋Šฅํ•œ ์‹์ด๋ผ๋ฉด ์ตœ์ข… ๊ฒฐ๊ณผ๊ฐ€ ์กด์žฌํ•ด์•ผ ํ•œ๋‹ค. ์ฒซ๋ฒˆ์งธ ๋ฌธ์žฅ์€ ๊ณ„์‚ฐ์ด ๋๋‚˜์žˆ๋Š” ์‹์ด๊ณ  ์ตœ์ข… ๊ฒฐ๊ณผ๊ฐ€ 100 ์ด๋‹ค. ๋‘๋ฒˆ์งธ ๋ฌธ์žฅ์€ ํ•œ๋ฒˆ๋งŒ ๊ณ„์‚ฐํ•˜๋ฉด ๊ณ„์‚ฐ์ด ๋๋‚˜๊ณ  ์ตœ์ข… ๊ฒฐ๊ณผ๋Š” 4 ์ด๋‹ค. ๊ทธ๋ ‡๋‹ค๋ฉด ๋‹ค์Œ๊ณผ ๊ฐ™์€ ๋ฌธ์žฅ์€ ๊ณ„์‚ฐ ๊ฐ€๋Šฅํ•œ ์‹์ด ๋งž๋Š”๊ฐ€?
~cpp 
a = 10;
std::cout << "Hello World!!";
์ฒซ๋ฒˆ์งธ ๋ฌธ์žฅ์„ ๊ณ„์‚ฐํ•˜๋ฉด a๋ผ๋Š” ๋ณ€์ˆ˜์— 10์„ ๋Œ€์ž…ํ•˜๋ฉด ๋˜๊ณ  ๊ฒฐ๊ตญ ๋‚จ๋Š”๊ฒƒ์€ a๋ฐ–์— ์—†์œผ๋ฏ€๋กœ a์˜ ๊ฐ’์ด ์ตœ์ข… ๊ฒฐ๊ณผ๊ฐ€ ๋œ๋‹ค. ๋‘๋ฒˆ์งธ ๋ฌธ์žฅ์„ ๊ณ„์‚ฐํ•˜๋ฉด std::cout๊ณผ "Hello World!!"๋ฅผ ์™ผ์ชฝ ์‰ฌํ”„ํŠธ ์—ฐ์‚ฐ์„ ํ•˜๊ณ  ๋‚˜์˜จ ๊ฒฐ๊ณผ๊ฐ€ ์ตœ์ข… ๊ฒฐ๊ณผ๊ฐ€ ๋œ๋‹ค. ์‹ค์žฌ๋กœ ์—ฐ์‚ฐ ๊ฒฐ๊ณผ๊ฐ€ std::cout ์ด๊ณ  ์ด๊ฒƒ์ด ์ตœ์ข… ๊ฒฐ๊ณผ๊ฐ€ ๋œ๋‹ค. ์—ฌ๊ธฐ์„œ ์™ผ์ชฝ ์‰ฌํ”„ํŠธ ์—ฐ์‚ฐ์ด ๊ณผ์—ฐ std::cout๊ณผ "Hello World!!" ์‚ฌ์ด์—์„œ ๊ฐ€๋Šฅํ•œ ๊ฒƒ์ธ๊ฐ€ ๋ผ๋Š” ์˜๋ฌธ์„ ๊ฐ–๊ฒŒ ๋ ์ˆ˜๋„ ์žˆ๊ฒ ์ง€๋งŒ C++์—๋Š” ์—ฐ์‚ฐ์ž ์žฌ์ •์˜(operator overloading) ๋ผ๋Š” ๊ฒƒ์ด ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ์ด๋Ÿฐ๊ฒƒ์„ ์ถฉ๋ถ„ํžˆ ๊ฐ€๋Šฅํ•˜๊ฒŒ ๋งŒ๋“ค์ˆ˜ ์žˆ๋‹ค๊ณ ๋งŒ ์•Œ๊ณ  ๋„˜์–ด๊ฐ€๊ธฐ ๋ฐ”๋ž€๋‹ค. ์—ฌ๊ธฐ์„œ ๋‘๋ฒˆ์งธ ๋ฌธ์žฅ์„ ์ž์„ธํžˆ ์•Œ๊ณ  ๋„˜์–ด๊ฐˆ ํ•„์š”๊ฐ€ ์žˆ๋‹ค. ๋‘๋ฒˆ์งธ ๋ฌธ์žฅ๋„ ์•ž์—์„œ ์„ค๋ช…ํ–ˆ๋“ฏ์ด ๊ณ„์‚ฐ ๊ฐ€๋Šฅํ•œ ์‹์ด๊ณ , ๊ฒฐ๊ตญ ์‹คํ–‰๋˜๋ฉด ๊ณ„์‚ฐ์ด ์ˆ˜ํ–‰๋˜์ง€๋งŒ ๊ทธ๊ฒƒ๊ณผ ๋”๋ถˆ์–ด ์ผ์–ด๋‚˜๋Š” ์ผ์ด ํ•œ๊ฐ€์ง€ ๋” ์žˆ๋Š”๋ฐ, ๋ฐ”๋กœ ํ‘œ์ค€ ์ถœ๋ ฅ์œผ๋กœ "Hello World!!" ๊ฐ€ ์ถœ๋ ฅ๋œ๋‹ค๋Š” ๊ฒƒ์ด๋‹ค. ์ด๋ ‡๊ฒŒ ๊ณ„์‚ฐ๋˜์–ด์ง€๋Š” ๊ณผ์ •์—์„œ ๊ณ„์‚ฐ ๊ฒฐ๊ณผ์™€ ๋”๋ถˆ์–ด ๋‚˜ํƒ€๋‚˜๋Š” ๊ฒƒ์„ side effect๋ผ๊ณ  ํ•œ๋‹ค. ์ฒซ๋ฒˆ์งธ ๋ฌธ์žฅ๊ณผ ๊ฐ™์€ ๊ฒฝ์šฐ์—๋Š” side effect๊ฐ€ ์—†๋‹ค. ๋‹ค์Œ๊ณผ ๊ฐ™์€ ๋‘ ๋ฌธ์žฅ์ด ์žˆ๋‹ค๊ณ  ํ•˜์ž.
~cpp 
a = b + c;
std::cout << "Hi! C++";
์—ฌ๊ธฐ์„œ ์ฒซ๋ฒˆ์งธ ๋ฌธ์žฅ์€ b๋ผ๋Š” ๋ณ€์ˆ˜์˜ ๊ฐ’๊ณผ c๋ผ๋Š” ๋ณ€์ˆ˜์˜ ๊ฐ’์„ ๋”ํ•ด์„œ a๋ผ๋Š” ๋ณ€์ˆ˜์— ์ €์žฅํ•˜๋Š” ์‹์œผ๋กœ ์ตœ์ข… ๊ฒฐ๊ณผ๊ฐ€ a๋ผ๋Š” ๋ณ€์ˆ˜์— ์ €์žฅ๋˜๋ฏ€๋กœ ์ด๋Ÿฌํ•œ ๋ฌธ์žฅ์€ ์ตœ์ข… ๊ฒฐ๊ณผ๋งŒ์„ ์ด์šฉํ•˜๊ธฐ ์œ„ํ•œ ๋ฌธ์žฅ์ด๊ณ , ๋‘๋ฒˆ์งธ ๋ฌธ์žฅ์€ std::cout๊ณผ "Hi! C++"์„ ์™ผ์ชฝ ์‰ฌํ”„ํŠธ ์—ฐ์‚ฐ์„ ํ•˜์—ฌ side effect๋กœ "Hi! C++"์„ ํ‘œ์ค€ ์ถœ๋ ฅ์— ์ถœ๋ ฅํ•˜๊ณ  ์ตœ์ข… ๊ฒฐ๊ณผ๋Š” ํŠน๋ณ„ํžˆ ๋”ฐ๋กœ ์ €์žฅํ•˜์ง€ ์•Š์œผ๋ฏ€๋กœ ์ตœ์ข… ๊ฒฐ๊ณผ์—๋Š” ๊ด€์‹ฌ์ด ์—†๊ณ , side effect๋งŒ์„ ์ด์šฉํ•˜๊ธฐ ์œ„ํ•œ ๋ฌธ์žฅ์ด๋‹ค. ๋ฌผ๋ก  ์˜ˆ๋ฅผ ๋“ค์ง€๋Š” ์•Š์•˜์ง€๋งŒ ์ตœ์ข… ๊ฒฐ๊ณผ๋„ ์ด์šฉํ•˜๊ณ  side effect๋„ ์ด์šฉํ•˜๊ธฐ ์œ„ํ•œ ๋ฌธ์žฅ๋„ ์žˆ๋‹ค.

Valid XHTML 1.0! Valid CSS! powered by MoniWiki
last modified 2021-02-07 05:22:24
Processing time 0.0045 sec