Notice
Recent Posts
Recent Comments
Link
관리 메뉴

λͺ©λ‘μ „체 κΈ€ (1096)

KoreanFoodie's Study

Effective C++ | ν•­λͺ© 31 : 파일 μ‚¬μ΄μ˜ 컴파일 μ˜μ‘΄μ„±μ„ μ΅œλŒ€λ‘œ μ€„μ΄μž

C++ ν”„λ‘œκ·Έλž˜λ¨Έμ˜ ν•„λ…μ„œμ΄μž 바이블인, 슀콧 λ§ˆμ΄μ–΄μŠ€μ˜ Modern Effective C++ λ₯Ό 읽고 κΈ°μ–΅ν•  λ‚΄μš©μ„ μš”μ•½ν•˜κ³  μžˆμŠ΅λ‹ˆλ‹€. κΌ­ μ½μ–΄λ³΄μ‹œκΈΈ μΆ”μ²œλ“œλ¦½λ‹ˆλ‹€! ν•­λͺ© 31 : 파일 μ‚¬μ΄μ˜ 컴파일 μ˜μ‘΄μ„±μ„ μ΅œλŒ€λ‘œ μ€„μ΄μž 핡심 : 1. 컴파일 μ˜μ‘΄μ„±μ„ μ΅œμ†Œν™”ν•˜λŠ” μž‘μ—…μ˜ 배경이 λ˜λŠ” κ°€μž₯ 기본적인 μ•„μ΄λ””μ–΄λŠ” 'μ •μ˜' λŒ€μ‹ μ— 'μ„ μ–Έ' 에 μ˜μ‘΄ν•˜κ²Œ λ§Œλ“€μžλŠ” 것이닀. 이 아이디어에 κΈ°λ°˜ν•œ 두 가지 μ ‘κ·Ό 방법은 ν•Έλ“€ ν΄λž˜μŠ€μ™€ μΈν„°νŽ˜μ΄μŠ€ ν΄λž˜μŠ€μ΄λ‹€. 2. 라이브러리 ν—€λ”λŠ” κ·Έ 자체둜 λͺ¨λ“  것을 κ°–μΆ”μ–΄μ•Ό ν•˜λ©° μ„ μ–ΈλΆ€λ§Œ κ°–κ³  μžˆλŠ” ν˜•νƒœμ—¬μ•Ό ν•œλ‹€. 이 κ·œμΉ™μ€ ν…œν”Œλ¦Ώμ΄ μ“°μ΄κ±°λ‚˜ 쓰이지 μ•Šκ±°λ‚˜ λ™μΌν•˜κ²Œ μ μš©ν•˜μž. C++ λŠ” μΈν„°νŽ˜μ΄μŠ€μ™€ κ΅¬ν˜„μ„ κΉ”λ”ν•˜κ²Œ λΆ„λ¦¬ν•˜λŠ” 일에 일가견이 μ—†λ‹€. μ˜ˆμ‹œλ₯Ό 보자. class Person {..

Tutorials/C++ : Advanced 2022. 10. 25. 16:26
Effective C++ | ν•­λͺ© 30 : 인라인 ν•¨μˆ˜λŠ” λ―Έμ£Όμ•Œκ³ μ£Όμ•Œ λ”°μ Έμ„œ 이해해 λ‘μž

C++ ν”„λ‘œκ·Έλž˜λ¨Έμ˜ ν•„λ…μ„œμ΄μž 바이블인, 슀콧 λ§ˆμ΄μ–΄μŠ€μ˜ Modern Effective C++ λ₯Ό 읽고 κΈ°μ–΅ν•  λ‚΄μš©μ„ μš”μ•½ν•˜κ³  μžˆμŠ΅λ‹ˆλ‹€. κΌ­ μ½μ–΄λ³΄μ‹œκΈΈ μΆ”μ²œλ“œλ¦½λ‹ˆλ‹€! ν•­λͺ© 30 : 인라인 ν•¨μˆ˜λŠ” λ―Έμ£Όμ•Œκ³ μ£Όμ•Œ λ”°μ Έμ„œ 이해해 λ‘μž 핡심 : 1. ν•¨μˆ˜ 인라인은 μž‘κ³ , 자주 ν˜ΈμΆœλ˜λŠ” ν•¨μˆ˜μ— λŒ€ν•΄μ„œλ§Œ ν•˜μž. μ΄λ ‡κ²Œ ν•˜λ©΄ 디버깅 및 라이브러리의 λ°”μ΄λ„ˆλ¦¬ μ—…κ·Έλ ˆμ΄λ“œκ°€ μš©μ΄ν•΄μ§€κ³ , 자칫 생길 수 μžˆλŠ” μ½”λ“œ λΆ€ν’€λ¦Ό ν˜„μƒμ΄ μ΅œμ†Œν™”λ˜λ©°, ν”„λ‘œκ·Έλž¨μ˜ 속λ ₯이 더 빨라질 수 μžˆλŠ” 여지가 졜고둜 λ§Žμ•„μ§„λ‹€. 2. ν•¨μˆ˜ ν…œν”Œλ¦Ώμ΄ λŒ€κ°œ 헀더 νŒŒμΌμ— λ“€μ–΄κ°„λ‹€λŠ” 일반적인 λΆ€λΆ„λ§Œ μƒκ°ν•΄μ„œ 이듀을 inline 으둜 μ„ μ–Έν•˜λ©΄ μ•ˆ λœλ‹€. 인라인 ν•¨μˆ˜λ₯Ό μ‚¬μš©ν•˜λ©΄ μ»΄νŒŒμΌλŸ¬κ°€ ν•¨μˆ˜ 본문에 λŒ€ν•΄ λ¬Έλ§₯별(context-specific) μ΅œμ ν™”λ₯Ό κ±ΈκΈ°κ°€ 용..

Tutorials/C++ : Advanced 2022. 10. 25. 16:26
Effective C++ | ν•­λͺ© 29 : μ˜ˆμ™Έ μ•ˆμ „μ„±μ΄ ν™•λ³΄λ˜λŠ” κ·Έλ‚  μœ„ν•΄ μ‹Έμš°κ³  또 μ‹Έμš°μž!

C++ ν”„λ‘œκ·Έλž˜λ¨Έμ˜ ν•„λ…μ„œμ΄μž 바이블인, 슀콧 λ§ˆμ΄μ–΄μŠ€μ˜ Modern Effective C++ λ₯Ό 읽고 κΈ°μ–΅ν•  λ‚΄μš©μ„ μš”μ•½ν•˜κ³  μžˆμŠ΅λ‹ˆλ‹€. κΌ­ μ½μ–΄λ³΄μ‹œκΈΈ μΆ”μ²œλ“œλ¦½λ‹ˆλ‹€! ν•­λͺ© 29 : μ˜ˆμ™Έ μ•ˆμ „μ„±μ΄ ν™•λ³΄λ˜λŠ” κ·Έλ‚  μœ„ν•΄ μ‹Έμš°κ³  또 μ‹Έμš°μž! 핡심 : 1. μ˜ˆμ™Έ μ•ˆμ „μ„±μ„ κ°–μΆ˜ ν•¨μˆ˜λŠ” μ‹€ν–‰ 쀑 μ˜ˆμ™Έκ°€ λ°œμƒλ˜λ”λΌλ„ μžμ›μ„ λˆ„μΆœμ‹œν‚€μ§€ μ•ŠμœΌλ©° 자료ꡬ쑰λ₯Ό λ”λŸ½νžŒ μ±„λ‘œ 내버렀 두지 μ•ŠλŠ”λ‹€. 이런 ν•¨μˆ˜λ“€μ΄ μ œκ³΅ν•  수 μžˆλŠ” μ˜ˆμ™Έ μ•ˆμ „μ„± 보μž₯은 기본적인 보μž₯, κ°•λ ₯ν•œ 보μž₯, μ˜ˆμ™Έ κΈˆμ§€ 보μž₯이 μžˆλ‹€. 2. κ°•λ ₯ν•œ μ˜ˆμ™Έ μ•ˆμ „μ„± 보μž₯은 '볡사-ν›„-λ§žλ°”κΎΈκΈ°' 방법을 μ¨μ„œ κ΅¬ν˜„ν•  수 μžˆμ§€λ§Œ, λͺ¨λ“  ν•¨μˆ˜μ— λŒ€ν•΄ κ°•λ ₯ν•œ 보μž₯이 μ‹€μš©μ μΈ 것은 μ•„λ‹ˆλ‹€. 3. μ–΄λ–€ ν•¨μˆ˜κ°€ μ œκ³΅ν•˜λŠ” μ˜ˆμ™Έ μ•ˆμ „μ„± 보μž₯의 κ°•λ„λŠ”, κ·Έ ν•¨μˆ˜κ°€ λ‚΄λΆ€μ μœΌλ‘œ ν˜ΈμΆœν•˜λŠ” ν•¨μˆ˜λ“€..

Tutorials/C++ : Advanced 2022. 10. 25. 16:25
Effective C++ | ν•­λͺ© 28 : λ‚΄λΆ€μ—μ„œ μ‚¬μš©ν•˜λŠ” 객체에 λŒ€ν•œ 'ν•Έλ“€'을 λ°˜ν™˜ν•˜λŠ” μ½”λ“œλŠ” λ˜λ„λ‘ ν”Όν•˜μž

C++ ν”„λ‘œκ·Έλž˜λ¨Έμ˜ ν•„λ…μ„œμ΄μž 바이블인, 슀콧 λ§ˆμ΄μ–΄μŠ€μ˜ Modern Effective C++ λ₯Ό 읽고 κΈ°μ–΅ν•  λ‚΄μš©μ„ μš”μ•½ν•˜κ³  μžˆμŠ΅λ‹ˆλ‹€. κΌ­ μ½μ–΄λ³΄μ‹œκΈΈ μΆ”μ²œλ“œλ¦½λ‹ˆλ‹€! ν•­λͺ© 28 : λ‚΄λΆ€μ—μ„œ μ‚¬μš©ν•˜λŠ” 객체에 λŒ€ν•œ 'ν•Έλ“€'을 λ°˜ν™˜ν•˜λŠ” μ½”λ“œλŠ” λ˜λ„λ‘ ν”Όν•˜μž 핡심 : μ–΄λ–€ 객체의 λ‚΄λΆ€μš”μ†Œμ— λŒ€ν•œ ν•Έλ“€(참쑰자, 포인터, 반볡자) λ₯Ό λ°˜ν™˜ν•˜λŠ” 것은 λ˜λ„λ‘ ν”Όν•˜μž. μΊ‘μŠν™” 정도λ₯Ό 높이고, μƒμˆ˜ 멀버 ν•¨μˆ˜κ°€ 객체의 μƒμˆ˜μ„±μ„ μœ μ§€ν•œ μ±„λ‘œ λ™μž‘ν•  수 μžˆλ„λ‘ ν•˜λ©°, 무효참쑰 핸듀이 μƒκΈ°λŠ” 경우λ₯Ό μ΅œμ†Œν™”ν•  수 μžˆλ‹€. 클래슀 λ‚΄λΆ€μ˜ 데이터λ₯Ό 참쑰자둜 λ°˜ν™˜ν•˜λŠ” 것은 μ£Όμ˜ν•΄μ•Ό ν•œλ‹€. λ‹€μŒ μ˜ˆμ‹œλ₯Ό 보자. clas Point { public: Point(int x, int y); ... void setX(int newVal); voi..

Tutorials/C++ : Advanced 2022. 10. 25. 16:24
Effective C++ | ν•­λͺ© 27 : μΊμŠ€νŒ…μ€ μ ˆμ•½, 또 μ ˆμ•½! μžŠμ§€ 말자

C++ ν”„λ‘œκ·Έλž˜λ¨Έμ˜ ν•„λ…μ„œμ΄μž 바이블인, 슀콧 λ§ˆμ΄μ–΄μŠ€μ˜ Modern Effective C++ λ₯Ό 읽고 κΈ°μ–΅ν•  λ‚΄μš©μ„ μš”μ•½ν•˜κ³  μžˆμŠ΅λ‹ˆλ‹€. κΌ­ μ½μ–΄λ³΄μ‹œκΈΈ μΆ”μ²œλ“œλ¦½λ‹ˆλ‹€! ν•­λͺ© 27 : μΊμŠ€νŒ…μ€ μ ˆμ•½, 또 μ ˆμ•½! μžŠμ§€ 말자 핡심 : 1. λ‹€λ₯Έ 방법이 κ°€λŠ₯ν•˜λ‹€λ©΄ μΊμŠ€νŒ…μ€ ν”Όν•˜μž. 특히 μˆ˜ν–‰ μ„±λŠ₯에 λ―Όκ°ν•œ μ½”λ“œμ—μ„œ dynamic_cast λŠ” λͺ‡ 번이고 λ‹€μ‹œ μƒκ°ν•˜μž. 섀계 쀑에 μΊμŠ€νŒ…μ΄ ν•„μš”ν•΄μ‘Œλ‹€λ©΄, μΊμŠ€νŒ…μ„ 쓰지 μ•ŠλŠ” λ‹€λ₯Έ 방법을 μ‹œλ„ν•΄ 보자. 2. μΊμŠ€νŒ…μ΄ μ–΄μ©” 수 없이 ν•„μš”ν•˜λ‹€λ©΄, ν•¨μˆ˜ μ•ˆμ— 숨길 수 μžˆλ„λ‘ ν•΄ 보자. μ΄λ ‡κ²Œ ν•˜λ©΄ μ΅œμ†Œν•œ μ‚¬μš©μžλŠ” μžμ‹ μ˜ μ½”λ“œμ— μΊμŠ€νŒ…μ„ 넣지 μ•Šκ³  이 ν•¨μˆ˜λ₯Ό ν˜ΈμΆœν•  수 있게 λœλ‹€. 3. κ΅¬ν˜• μŠ€νƒ€μΌμ˜ 캐슀트λ₯Ό μ“°λ €κ±°λ“  C++ μŠ€νƒ€μΌμ˜ 캐슀트λ₯Ό μ„ ν˜Έν•˜μž. λ°œκ²¬ν•˜κΈ°λ„ 쉽고, 섀계..

Tutorials/C++ : Advanced 2022. 10. 25. 16:18
Effective C++ | ν•­λͺ© 25 : μ˜ˆμ™Έλ₯Ό λ˜μ§€μ§€ μ•ŠλŠ” swap 에 λŒ€ν•œ 지원도 생각해 보자

C++ ν”„λ‘œκ·Έλž˜λ¨Έμ˜ ν•„λ…μ„œμ΄μž 바이블인, 슀콧 λ§ˆμ΄μ–΄μŠ€μ˜ Modern Effective C++ λ₯Ό 읽고 κΈ°μ–΅ν•  λ‚΄μš©μ„ μš”μ•½ν•˜κ³  μžˆμŠ΅λ‹ˆλ‹€. κΌ­ μ½μ–΄λ³΄μ‹œκΈΈ μΆ”μ²œλ“œλ¦½λ‹ˆλ‹€! ν•­λͺ© 25 : μ˜ˆμ™Έλ₯Ό λ˜μ§€μ§€ μ•ŠλŠ” swap 에 λŒ€ν•œ 지원도 생각해 보자 핡심 : 1. std::swap 이 μ‚¬μš©μž μ •μ˜ νƒ€μž…μ— λŒ€ν•΄ 느리게 λ™μž‘ν•  여지가 μžˆλ‹€λ©΄ swap 멀버 ν•¨μˆ˜λ₯Ό μ œκ³΅ν•˜μž. 이 멀버 swap 은 μ˜ˆμ™Έλ₯Ό λ˜μ§€μ§€ μ•Šλ„λ‘ λ§Œλ“€μž. 2. 멀버 swap 을 μ œκ³΅ν–ˆμœΌλ©΄, 이 멀버λ₯Ό ν˜ΈμΆœν•˜λŠ” 비멀버 swap 도 μ œκ³΅ν•˜μž. 클래슀(ν…œν”Œλ¦Ώμ΄ μ•„λ‹Œ)에 λŒ€ν•΄μ„œλŠ”, std::swap 도 νŠΉμˆ˜ν™”ν•΄ λ‘μž. 3. μ‚¬μš©μž μž…μž₯μ—μ„œ swap 을 ν˜ΈμΆœν•  λ•ŒλŠ”, std::swap 에 λŒ€ν•œ using 선언을 λ„£μ–΄ μ€€ 후에 λ„€μž„μŠ€νŽ˜μ΄μŠ€ ν•œμ • 없이 swap 을..

Tutorials/C++ : Advanced 2022. 10. 25. 16:15
Effective C++ | ν•­λͺ© 24 : νƒ€μž… λ³€ν™˜μ΄ λͺ¨λ“  λ§€κ°œλ³€μˆ˜μ— λŒ€ν•΄ μ μš©λ˜μ–΄μ•Ό ν•œλ‹€λ©΄ 비멀버 ν•¨μˆ˜λ₯Ό μ„ μ–Έν•˜μž

C++ ν”„λ‘œκ·Έλž˜λ¨Έμ˜ ν•„λ…μ„œμ΄μž 바이블인, 슀콧 λ§ˆμ΄μ–΄μŠ€μ˜ Modern Effective C++ λ₯Ό 읽고 κΈ°μ–΅ν•  λ‚΄μš©μ„ μš”μ•½ν•˜κ³  μžˆμŠ΅λ‹ˆλ‹€. κΌ­ μ½μ–΄λ³΄μ‹œκΈΈ μΆ”μ²œλ“œλ¦½λ‹ˆλ‹€! ν•­λͺ© 24 : νƒ€μž… λ³€ν™˜μ΄ λͺ¨λ“  λ§€κ°œλ³€μˆ˜μ— λŒ€ν•΄ μ μš©λ˜μ–΄μ•Ό ν•œλ‹€λ©΄ 비멀버 ν•¨μˆ˜λ₯Ό μ„ μ–Έν•˜μž 핡심 : μ–΄λ–€ ν•¨μˆ˜μ— λ“€μ–΄κ°€λŠ” λͺ¨λ“  λ§€κ°œλ³€μˆ˜(this 포인터가 κ°€λ¦¬ν‚€λŠ” 객체도 ν¬ν•¨ν•΄μ„œ) 에 λŒ€ν•΄ νƒ€μž… λ³€ν™˜μ„ ν•΄ 쀄 ν•„μš”κ°€ μžˆλ‹€λ©΄, κ·Έ ν•¨μˆ˜λŠ” 비멀버이어야 ν•œλ‹€. 유리수λ₯Ό λ‚˜νƒ€λ‚΄λŠ” ν΄λž˜μŠ€κ°€ μžˆλ‹€κ³  ν•˜κ³ , κ³±μ…‰ 연산을 λ§Œλ“ λ‹€κ³  κ°€μ •ν•˜μž. class Rational { public: Rational(int numerator = 0, int denominator = 1); int numerator() const; int denominator() const;..

Tutorials/C++ : Advanced 2022. 10. 25. 16:15
Effective C++ | ν•­λͺ© 23 : 멀버 ν•¨μˆ˜λ³΄λ‹€λŠ” 비멀버 λΉ„ν”„λ Œλ“œ ν•¨μˆ˜μ™€ 더 κ°€κΉŒμ›Œμ§€μž

C++ ν”„λ‘œκ·Έλž˜λ¨Έμ˜ ν•„λ…μ„œμ΄μž 바이블인, 슀콧 λ§ˆμ΄μ–΄μŠ€μ˜ Modern Effective C++ λ₯Ό 읽고 κΈ°μ–΅ν•  λ‚΄μš©μ„ μš”μ•½ν•˜κ³  μžˆμŠ΅λ‹ˆλ‹€. κΌ­ μ½μ–΄λ³΄μ‹œκΈΈ μΆ”μ²œλ“œλ¦½λ‹ˆλ‹€! ν•­λͺ© 23 : 멀버 ν•¨μˆ˜λ³΄λ‹€λŠ” 비멀버 λΉ„ν”„λ Œλ“œ ν•¨μˆ˜μ™€ 더 κ°€κΉŒμ›Œμ§€μž 핡심 : 멀버 ν•¨μˆ˜λ³΄λ‹€λŠ” 비멀버 λΉ„ν”„λ Œλ“œ ν•¨μˆ˜λ₯Ό 자주 μ“°μž. μΊ‘μŠν™” 정도가 높아지고, νŒ¨ν‚€μ§• μœ μ—°μ„±λ„ 컀지며, κΈ°λŠ₯적인 ν™•μž₯성도 λŠ˜μ–΄λ‚œλ‹€. μ›Ή λΈŒλΌμš°μ €μ—μ„œ μΊμ‹œλ₯Ό λΉ„μš°λŠ” ν•¨μˆ˜, URL 기둝을 μ—†μ• λŠ” ν•¨μˆ˜, μΏ ν‚€λ₯Ό μ œκ±°ν•˜λŠ” ν•¨μˆ˜κ°€ μžˆλ‹€κ³  ν•˜μž. μ„Έ λ™μž‘μ„ λ™μ‹œμ— ν•˜λ„λ‘ λ§Œλ“œλŠ” ν•¨μˆ˜λ₯Ό μ •μ˜ν•  λ•Œ, 멀버 ν•¨μˆ˜λ‘œ λ§Œλ“œλŠ” 것이 μ’‹μ„κΉŒ, 비멀버 ν•¨μˆ˜λ‘œ μ œκ³΅ν•˜λŠ” 것이 더 μ’‹μ„κΉŒ? class WebBrowser { public: void clearCache(); void clearHist..

Tutorials/C++ : Advanced 2022. 10. 25. 16:14
Effective C++ | ν•­λͺ© 22 : 데이터 멀버가 선언될 곳은 private μ˜μ—­μž„μ„ λͺ…μ‹¬ν•˜μž

C++ ν”„λ‘œκ·Έλž˜λ¨Έμ˜ ν•„λ…μ„œμ΄μž 바이블인, 슀콧 λ§ˆμ΄μ–΄μŠ€μ˜ Modern Effective C++ λ₯Ό 읽고 κΈ°μ–΅ν•  λ‚΄μš©μ„ μš”μ•½ν•˜κ³  μžˆμŠ΅λ‹ˆλ‹€. κΌ­ μ½μ–΄λ³΄μ‹œκΈΈ μΆ”μ²œλ“œλ¦½λ‹ˆλ‹€! ν•­λͺ© 22 : 데이터 멀버가 선언될 곳은 private μ˜μ—­μž„μ„ λͺ…μ‹¬ν•˜μž 핡심 : 1. 데이터 λ©€λ²„λŠ” private λ©€λ²„λ‘œ μ„ μ–Έν•˜μž 이λ₯Ό 톡해 클래슀 μ œμž‘μžλŠ” λ¬Έλ²•μ μœΌλ‘œ 일관성 μžˆλŠ” 데이터 μ ‘κ·Ό ν†΅λ‘œλ₯Ό μ œκ³΅ν•  수 있고, ν•„μš”μ— λ”°λΌμ„œλŠ” μ„Έλ°€ν•œ μ ‘κ·Ό μ œμ–΄λ„ κ°€λŠ₯ν•˜λ©°, 클래슀의 λΆˆλ³€μ†μ„±μ„ κ°•ν™”ν•  수 μžˆμ„ 뿐 μ•„λ‹ˆλΌ, λ‚΄λΆ€ κ΅¬ν˜„μ˜ μœ΅ν†΅μ„±λ„ λ°œνœ˜ν•  수 μžˆλ‹€. 2. protected λŠ” public 보닀 더 많이 '보호' λ°›κ³  μžˆλŠ” 것이 μ ˆλŒ€λ‘œ μ•„λ‹ˆλ‹€. λ¨Όμ €, 데이터 멀버에 public λŒ€μ‹  private 을 써야 ν•˜λŠ” 이유λ₯Ό μ•Œμ•„λ³΄μž. 문법적 일관..

Tutorials/C++ : Advanced 2022. 10. 25. 16:13