λͺ©λ‘μ 체 κΈ (1103)
KoreanFoodie's Study
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/9ro3Z/btrPujjBgMf/5iT3bK0zpvXv5VlMvFRggK/img.jpg)
C++ νλ‘κ·Έλλ¨Έμ νλ μμ΄μ λ°μ΄λΈμΈ, μ€μ½§ λ§μ΄μ΄μ€μ Modern Effective C++ λ₯Ό μ½κ³ κΈ°μ΅ν λ΄μ©μ μμ½νκ³ μμ΅λλ€. κΌ μ½μ΄λ³΄μκΈΈ μΆμ²λ립λλ€! νλͺ© 7 : λ€νμ±μ κ°μ§ κΈ°λ³Έ ν΄λμ€μμλ μλ©Έμλ₯Ό λ°λμ κ°μ μλ©Έμλ‘ μ μΈνμ ν΅μ¬ : 1. λ€νμ±μ κ°μ§ κΈ°λ³Έ ν΄λμ€μλ λ°λμ κ°μ μλ©Έμλ₯Ό μ μΈν΄μΌ νλ€. μ¦, μ΄λ€ ν΄λμ€κ° κ°μ ν¨μλ₯Ό νλλΌλ κ°κ³ μμΌλ©΄, μ΄ ν΄λμ€μ μλ©Έμλ κ°μ μλ©Έμμ΄μ΄μΌ νλ€. 2. κΈ°λ³Έ ν΄λμ€λ‘ μ€κ³λμ§ μμκ±°λ λ€νμ±μ κ°λλ‘ μ€κ³λμ§ μμ ν΄λμ€μλ κ°μμλ©Έμλ₯Ό μ μΈνμ§ λ§μμΌ νλ€. λ€μκ³Ό κ°μ TimeKeeper ν΄λμ€λ₯Ό λ§λ€κ³ , ν©ν 리 λ©μλ ν¨ν΄μΌλ‘ νμ ν΄λμ€μ νμ μ λ§λ κ°μ²΄λ₯Ό 리ν΄νλ€κ³ κ°μ νμ. class TimeKeeper { ..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/CnbcO/btrPwzF4VZs/m1ZSAis7ySiBsVDxw2DtS1/img.jpg)
C++ νλ‘κ·Έλλ¨Έμ νλ μμ΄μ λ°μ΄λΈμΈ, μ€μ½§ λ§μ΄μ΄μ€μ Modern Effective C++ λ₯Ό μ½κ³ κΈ°μ΅ν λ΄μ©μ μμ½νκ³ μμ΅λλ€. κΌ μ½μ΄λ³΄μκΈΈ μΆμ²λ립λλ€! νλͺ© 6 : μ»΄νμΌλ¬κ° λ§λ€μ΄λΈ ν¨μκ° νμ μμΌλ©΄ νμ€ν μ΄λ€μ μ¬μ©μ κΈν΄ λ²λ¦¬μ ν΅μ¬ : μ»΄νμΌλ¬μμ μλμΌλ‘ μ 곡νλ κΈ°λ₯μ νμ©μΉ μμΌλ €λ©΄, λμλλ λ©€λ² ν¨μλ₯Ό private μΌλ‘ μ μΈν νμ ꡬνμ νμ§ μμ μ±λ‘ λμ. Uncopyable κ³Ό λΉμ·ν κΈ°λ³Έ ν΄λμ€λ₯Ό μ°λ κ²λ ν λ°©λ²μ΄λ€. μ°λ¦¬κ° λΆλμ°μ ν맀νλ νλ‘κ·Έλ¨μ λ§λ€κ² λμλλ°, κ° μμ°μ μΈμμμ νλλ°μ μλ€λ κ²μ μ μ©ν΄ λ¬λΌκ³ μμ²νλ€κ³ κ°μ ν΄ λ³΄μ. μ¦, λ€μκ³Ό κ°μ μ½λλ μ»΄νμΌμ΄ λλ©΄ μλλ€λ λ»μ΄λ€! class HomeForSale {...}; .....
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/cgYYo3/btrPwAroDZ6/GWR77kOYKhNxN8nWiTEq00/img.jpg)
C++ νλ‘κ·Έλλ¨Έμ νλ μμ΄μ λ°μ΄λΈμΈ, μ€μ½§ λ§μ΄μ΄μ€μ Modern Effective C++ λ₯Ό μ½κ³ κΈ°μ΅ν λ΄μ©μ μμ½νκ³ μμ΅λλ€. κΌ μ½μ΄λ³΄μκΈΈ μΆμ²λ립λλ€! νλͺ© 5 : C++ κ° μκ·Όμ¬μ© λ§λ€μ΄ νΈμΆν΄ λ²λ¦¬λ ν¨μλ€μ μ΄κ°μ μΈμ°μ ν΅μ¬ : μ»΄νμΌλ¬λ κ²½μ°μ λ°λΌ ν΄λμ€μ λν΄ κΈ°λ³Έ μμ±μ, λ³΅μ¬ μμ±μ, λ³΅μ¬ λμ μ°μ°μ, μλ©Έμλ₯Ό μμμ μΌλ‘ λ§λ€μ΄ λμ μ μλ€ ν΄λμ€λ₯Ό λ§λ€ λ, μ»΄νμΌλ¬λ κΈ°λ³Έ μμ±μ, λ³΅μ¬ μμ±μ, λ³΅μ¬ λμ μ°μ°μ, μλ©Έμλ₯Ό μμμ μΌλ‘ μμ±νλ€. μλ©Έμλ ν΄λΉ ν΄λμ€κ° μμν κΈ°λ³Έ ν΄λμ€μ μλ©Έμκ° κ°μ μλ©Έμλ‘ λμ΄ μμ§ μμΌλ©΄ μμ λΉκ°μ μλ©Έμλ‘ λ§λ€μ΄μ§λ€(λ¬Όλ‘ μ¬μ©μκ° μμ±μλ₯Ό μ μΈνλ©΄ μ»΄νμΌλ¬κ° κΈ°λ³Έ μμ±μλ₯Ό λ§λ€μ§ μλλ€). κ·Έλ λ€λ©΄ μ΄λ¬ν κΈ°λ³Έ μμ±μκ° ..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/btZXYL/btrPvkoQx8q/Tk3hT1QWxWbpnMJXHYsxD1/img.jpg)
C++ νλ‘κ·Έλλ¨Έμ νλ μμ΄μ λ°μ΄λΈμΈ, μ€μ½§ λ§μ΄μ΄μ€μ Modern Effective C++ λ₯Ό μ½κ³ κΈ°μ΅ν λ΄μ©μ μμ½νκ³ μμ΅λλ€. κΌ μ½μ΄λ³΄μκΈΈ μΆμ²λ립λλ€! νλͺ© 4 : κ°μ²΄λ₯Ό μ¬μ©νκΈ° μ μ λ°λμ κ·Έ κ°μ²΄λ₯Ό μ΄κΈ°ννμ ν΅μ¬ : 1. κΈ°λ³Έμ 곡 νμ μ κ°μ²΄λ μ§μ μμΌλ‘ μ΄κΈ°ννμ. 2. μμ±μμμλ, μμ±μ λ³Έλ¬Έ λ΄λ¬΄μ λ°μ΄ν° λ©€λ²μ λν λμ λ¬Έμ λ£μ§ μκ³ μ΄κΈ°ν 리μ€νΈλ₯Ό μ¬μ©νμ. λν λ°μ΄ν° λ©€λ²κ° μ μΈλ μμμ λκ°μ΄ λμ΄νμ. 3. μ¬λ¬ λ²μ λ¨μμ μλ λΉμ§μ μ μ κ°μ²΄λ€μ μ΄κΈ°ν μμ λ¬Έμ λ νΌν΄μ μ€κ³ν΄μΌ νλ€. λΉμ§μ μ μ κ°μ²΄λ₯Ό μ§μ μ μ κ°μ²΄λ‘ λ°κΎΈλ©΄ λλ€. μμ±μλ₯Ό λ€μκ³Ό κ°μ΄ μ°λ κ²μ, μμ±κ³Ό λμμ 'μ΄κΈ°ν' νλ κ²μ΄ μλ, 'λμ 'μ ννλ κ²μ΄λ€. class Us..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/KBAUS/btrPuOXSZqG/Esvss1wK05KaRQiXfGubc1/img.jpg)
C++ νλ‘κ·Έλλ¨Έμ νλ μμ΄μ λ°μ΄λΈμΈ, μ€μ½§ λ§μ΄μ΄μ€μ Modern Effective C++ λ₯Ό μ½κ³ κΈ°μ΅ν λ΄μ©μ μμ½νκ³ μμ΅λλ€. κΌ μ½μ΄λ³΄μκΈΈ μΆμ²λ립λλ€! νλͺ© 3 : λμλ§ λ³΄μ΄λ©΄ const λ₯Ό λ€μ΄λ 보μ! ν΅μ¬ : 1. const λ₯Ό λΆμ¬ μ μΈνλ©΄ μ»΄νμΌλ¬κ° μ¬μ©μμ μλ¬λ₯Ό μ‘μλ΄λ λ° λμμ μ€λ€. const λ μ΄λ€ μ ν¨λ²μμ μλ κ°μ²΄μλ λΆμ μ μμΌλ©°, ν¨μ 맀κ°λ³μ λ° λ°ν νμ μλ λΆμ μ μμΌλ©°, λ©€λ² ν¨μμλ λΆμ μ μλ€. 2. μ»΄νμΌλ¬ μͺ½μμ 보면 λΉνΈμμ€ μμμ±μ μ§μΌμΌ νμ§λ§, μ°λ¦¬λ κ°λ μ μΈ(λ Όλ¦¬μ μΈ) μμμ±μ μ¬μ©ν΄μ νλ‘κ·Έλλ°ν΄μΌ νλ€. 3. μμ λ©€λ² λΉ λΉμμ λ©€λ² ν¨μκ° κΈ°λ₯μ μΌλ‘ μλ‘ λκ°κ² ꡬνλμ΄ μμ κ²½μ°μλ μ½λ μ€λ³΅μ νΌνλ κ²μ΄ μ’μλ°, μ΄λ..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/28WYK/btrPyKTXoPt/uGyawQw3v48N0nbr3uxADK/img.jpg)
C++ νλ‘κ·Έλλ¨Έμ νλ μμ΄μ λ°μ΄λΈμΈ, μ€μ½§ λ§μ΄μ΄μ€μ Modern Effective C++ λ₯Ό μ½κ³ κΈ°μ΅ν λ΄μ©μ μμ½νκ³ μμ΅λλ€. κΌ μ½μ΄λ³΄μκΈΈ μΆμ²λ립λλ€! νλͺ© 2 : #define μ μ°λ €κ±°λ const, enum, inline μ λ μ¬λ¦¬μ ν΅μ¬ : 1. λ¨μν μμλ₯Ό μΈ λλ, #define λ³΄λ€ const κ°μ²΄ νΉμ enum μ μ°μ μκ°νμ. 2. ν¨μμ²λΌ μ°μ΄λ 맀ν¬λ‘λ₯Ό λ§λ€λ €λ©΄, #define 맀ν¬λ‘λ³΄λ€ μΈλΌμΈ ν¨μλ₯Ό μ°μ μκ°νμ. νλͺ© 2μ ν΅μ¬μ, κ°κΈμ μ ν μ²λ¦¬μ보λ€λ μ»΄νμΌλ¬μ μΉνκ² μ§λ΄λ κ² μ’λ€λ κ²μ΄λ€. λ€μκ³Ό κ°μ μλ₯Ό 보μ. #define ASPECT_RATIO 1.653 μμ κ²½μ°, ν΄λΉ λΆλΆμ λλ²κΉ ν λ, ASPECT_RATIO λ μ»΄νμΌλ¬κ° μ°λ κΈ°νΈ ν ..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/FPfFh/btrPvvRjym7/Fd07Xng7kFvWjac5eqEk6K/img.jpg)
C++ νλ‘κ·Έλλ¨Έμ νλ μμ΄μ λ°μ΄λΈμΈ, μ€μ½§ λ§μ΄μ΄μ€μ Modern Effective C++ λ₯Ό μ½κ³ κΈ°μ΅ν λ΄μ©μ μμ½νκ³ μμ΅λλ€. κΌ μ½μ΄λ³΄μκΈΈ μΆμ²λ립λλ€! νλͺ© 1 : C++ λ₯Ό μΈμ΄λ€μ μ°ν©μ²΄λ‘ λ°λΌλ³΄λ μλͺ©μ νμ ν΅μ¬ : 1. C++ λ₯Ό μ¬μ©ν ν¨κ³Όμ μΈ νλ‘κ·Έλλ° κ·μΉμ, C++ μ μ΄λ€ λΆλΆμ μ¬μ©νλλμ λ°λΌ λ¬λΌμ§λ€! C++ μ μ΄λ£¨κ³ μλ νμ μμ (Building Block) μ ν¬κ² 4 κ°μ§μ΄λ€. C (C μλ ν νλ¦Ώλ μκ³ , μμΈλ μκ³ , μ€λ²λ‘λ©λ μλ€) κ°μ²΄ μ§ν₯ κ°λ μ C++ (ν΄λμ€λ₯Ό μ°λ C μ κ΄ν λͺ¨λ κ²λ€. μΊ‘μν, μμ, λ€νμ±, κ°μν¨μ λ±) ν νλ¦Ώ C++ (ν νλ¦Ώ λ©ν νλ‘κ·Έλλ°κΉμ§) STL (container, iterator, algorithm, fu..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/LyLrz/btrPjHRviaF/RHfLWje54jnOy18gPPwDJ0/img.jpg)
μ΄λμ°λμ 'μ΄λμ°μ κ²μμν' μ± μ 보며 μ’μ λ΄μ©μ μ 리νκ³ μμ΅λλ€. λ μμΈν λ΄μ©μ΄ κΆκΈνμλ€λ©΄, μ± μ κ΅¬λ§€ν΄ μ§μ μ½μ΄λ³΄μκΈ°λ₯Ό μΆμ²λ립λλ€! μΌκ°ν¨μλ₯Ό νμ©ν 물체μ νμ μΌκ°ν¨μλ₯Ό ν΅ν΄ 물체λ₯Ό νμ νλ©΄ μ’νκ°μ΄ μ΄λ»κ² λ³ν κΉ? λ¨Όμ , λ€μκ³Ό κ°μ΄ μ’ν (1, 1) μ θ λ§νΌ λ°μκ³ λ°©ν₯μΌλ‘ νμ νλ©΄, λ€μκ³Ό κ°μ΄ κ·Έλ €μ§κ² λλ€. μμμ, λ²‘ν° v λ κΈ°μ λ²‘ν° e1 μ e2 μ ν©μΌλ‘ ννλλ©°, μ΄λ₯Ό κ° θ λ§νΌ νμ μν¨ λ μμ (cosθ - sinθ, sinθ + cosθ) λ‘ ννν μ μμμ μ μ μλ€. λμΌν μ리λ‘, μμμ λ²‘ν° (x, y) λ₯Ό κ° θ λ§νΌ νμ μμΌ (x', y') λ₯Ό ꡬν΄λ³΄μ. μμ λ€μκ³Ό κ°μ΄ μΈ μ μλ€. κΈ°μ 벑ν°λ₯Ό νμ©νλ©΄, μμμ λ²‘ν° u λ₯Ό κ° θ λ§..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/n56Nm/btrPakIkVDt/Lm6wDw4jaCF4i8Rc8klEg0/img.jpg)
λ¨Όμ Message Pump λ, ν λ©μμ§λ₯Ό μ²λ¦¬νλ λμ€ λ©μμ§ νλ‘λΆν° λ€λ₯Έ λ©μμ§λ₯Ό κΊΌλ΄ μ΄λ₯Ό μ²λ¦¬νλ μ½λλ₯Ό μλ―Ένλ€. μλμ° μ΄ν리μΌμ΄μ μ κ²½μ°, UI λ° μ¬μ©μ μ λ ₯ μ²λ¦¬νλ κ³Όμ μμ λ©μμ§ ννλ₯Ό μ κ·Ή νμ©νκ³ μλ€. κΈ°μ΄μ μΈ Message Loop μ½λλ λ€μκ³Ό κ°λ€. MSG msg; while (GetMessage(&msg, NULL, 0, 0)) { TranslateMessage(&msg); DispatchMessage(&msg); } κ·Έλ°λ° GetMessage μ κ²½μ° λ°λνμ(λ©μμ§νμ λ©μμ§κ° μμ΄ GetMessage κ° λκ³ μλ μκ°)μ μ λλ‘ νμ©ν μ μμ΄, PeekMessage λ₯Ό λ§μ΄ νμ©νλ€. PeekMessage λ λ©μμ§ νμ λ©μμ§κ° μλ μλ 리ν΄μ νκΈ° λλ¬Έ..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/EuPKd/btrOQE9JQvb/RFunSizP2oUFR7IFDDSrWk/img.jpg)
Actor μ ActorComponent μ λν°μμλ κ²μ μ€λΈμ νΈ μλμ κ²μ μ€λΈμ νΈλ₯Ό λ£λ μμΌλ‘ Hierarchy λ₯Ό λ§λ€μ΄λΌ μ μλ€. νμ§λ§ μΈλ¦¬μΌμ κ·Έλ° μμΌλ‘ λμνμ§ μλλ€. μ λν°μμλ νκ³΅κΈ°κ° μλ€κ³ νμ λ, ν리νΉμ κ°μ’ κ²μ μ€λΈμ νΈλ₯Ό νμμ λ£μ΄ μ‘°ν©νλ λ°©μμΌλ‘ ν΄λΉ μ€λΈμ νΈλ₯Ό μ μν μ μλ€. κ·Έλ°λ° μΈλ¦¬μΌμμ Actor λ Bucket κ°μ κ°λ μΌλ‘, λ€μν μ‘ν° μ»΄ν¬λνΈλ₯Ό λ΄κ³ μλ€. μ¦, μΈλ¦¬μΌμ Bucket μμ λ€λ₯Έ Bucket μ λ£λ λ°©μμΌλ‘ μ€λΈμ νΈλ₯Ό μμ±νμ§ μλλ€. μ‘ν° μ»΄ν¬λνΈλ μ¬μ¬μ©κ°λ₯ν κΈ°λ₯μ μ μνλ μ»΄ν¬λνΈμ λν λ² μ΄μ€ ν΄λμ€λ‘ μΆ©λ, λ©μ, μλ μ΄λ, μ리 μ¬μ, λΉκ³Ό λͺ μ λ±μ λ€μν κΈ°λ₯μ μ§μνλ€. μΈλ¦¬μΌμμλ νΈλμ€νΌμ κ°μ§ μ‘ν° μ»΄..