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 effectC++์ ๋ชจ๋ ๋ฌธ์ฅ(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๋ ์ด์ฉํ๊ธฐ ์ํ ๋ฌธ์ฅ๋ ์๋ค.