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.0152 sec