λͺ©λ‘μ 체 κΈ (1103)
KoreanFoodie's Study
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/cb6lG5/btrPyKUTk0F/wofnFkdlf28cdmOu2alia1/img.png)
C++ νλ‘κ·Έλλ¨Έμ νλ μμ΄μ λ°μ΄λΈμΈ, μ€μ½§ λ§μ΄μ΄μ€μ Modern Effective C++ λ₯Ό μ½κ³ κΈ°μ΅ν λ΄μ©μ μμ½νκ³ μμ΅λλ€. κΌ μ½μ΄λ³΄μκΈΈ μΆμ²λ립λλ€! νλͺ© 10 : λ²μ μλ enum λ³΄λ€ λ²μ μλ enum μ μ νΈνλΌ ν΅μ¬ : 1. C++98 μ€νμΌμ enum μ μ΄μ λ λ²μ μλ enum μ΄λΌκ³ λΆλ₯Έλ€. 2. λ²μ μλ enum μ μ΄κ±°μλ€μ κ·Έ μμμλ§ λ³΄μΈλ€. μ΄ μ΄κ±°μλ€μ μ€μ§ μΊμ€ν μ ν΅ν΄μλ§ λ€λ₯Έ νμμΌλ‘ λ³νλλ€. 3. λ²μ μλ enum κ³Ό λ²μ μλ enum λͺ¨λ λ°ν νμ μ§μ μ μ§μνλ€. λ²μ μλ enum μ κΈ°λ³Έ λ°ν νμμ int μ΄λ€. λ²μ μλ enum μλ κΈ°λ³Έ λ°ν νμμ΄ μλ€. 4. λ²μ μλ enum μ νμ μ λ°© μ μΈμ΄ κ°λ₯νλ€. λ²μ μλ enu..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/NrTDS/btrPBqVm4g8/7KWgXPKRobgKA3lS8r5d10/img.png)
C++ νλ‘κ·Έλλ¨Έμ νλ μμ΄μ λ°μ΄λΈμΈ, μ€μ½§ λ§μ΄μ΄μ€μ Modern Effective C++ λ₯Ό μ½κ³ κΈ°μ΅ν λ΄μ©μ μμ½νκ³ μμ΅λλ€. κΌ μ½μ΄λ³΄μκΈΈ μΆμ²λ립λλ€! νλͺ© 9 : typedef λ³΄λ€ λ³μΉ μ μΈμ μ νΈνλΌ ν΅μ¬ : 1. typedef μ ν νλ¦Ώνλ₯Ό μ§μνμ§ μμ§λ§, using μ μ§μνλ€. 2. λ³μΉ ν νλ¦Ώμμλ "::type" μ λ―Έμ΄λ₯Ό λΆμΌ νμκ° μλ€. ν νλ¦Ώ μμμ typedef μ μ§μΉν λμλ "typename" μ λμ¬λ₯Ό λΆμ¬μΌ νλ κ²½μ°κ° λ§λ€. 3. C++14 λ C++11 μ λͺ¨λ νμ νΉμ§ λ³νμ λν using λ€μ μ 곡νλ€. typedef κ³Ό using (λ³μΉ μ μΈ, alias declaration) μ΄ νλ μΌμ λμΌνμ§λ§, using μ΄ λ μ§κ΄μ μ΄λ€. // ν¨μ ν¬..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/bjZzrN/btrPyVow4pZ/AZXkhNWhY3T6jQMVKl9FN0/img.png)
C++ νλ‘κ·Έλλ¨Έμ νλ μμ΄μ λ°μ΄λΈμΈ, μ€μ½§ λ§μ΄μ΄μ€μ Modern Effective C++ λ₯Ό μ½κ³ κΈ°μ΅ν λ΄μ©μ μμ½νκ³ μμ΅λλ€. κΌ μ½μ΄λ³΄μκΈΈ μΆμ²λ립λλ€! νλͺ© 8 : 0 κ³Ό NULL λ³΄λ€ nullptr λ₯Ό μ νΈνλΌ ν΅μ¬ : 1. 0 κ³Ό NULL λ³΄λ€ nullptr λ₯Ό μ νΈνλΌ. 2. μ μ νμκ³Ό ν¬μΈν° νμμ λν μ€λ²λ‘λ©μ νΌνλΌ. 리ν°λ΄ 0μ int μ΄μ§ ν¬μΈν°κ° μλλ€. ν¬μΈν°λ§ μ¬μ©ν μ μλ μμΉμ 0 μ΄ μμΌλ©΄ C++ μ λ§μ§λͺ»ν΄ μ΄λ₯Ό null ν¬μΈν°λ‘ ν΄μνμ§λ§, μ΄λ μ΅νμ μλ¨μΌ λΏμ΄λ€. // f μ μΈ κ°μ§ μ€λ²λ‘λ© void f(int); void f(bool); void f(void*); ... // f(void*) κ° μλ f(int) νΈμΆ f(0); // μ»΄νμΌ λμ§ ..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/lrHfh/btrPycdviXd/TINKEks1L8PkjFSTyIzNtK/img.png)
C++ νλ‘κ·Έλλ¨Έμ νλ μμ΄μ λ°μ΄λΈμΈ, μ€μ½§ λ§μ΄μ΄μ€μ Modern Effective C++ λ₯Ό μ½κ³ κΈ°μ΅ν λ΄μ©μ μμ½νκ³ μμ΅λλ€. κΌ μ½μ΄λ³΄μκΈΈ μΆμ²λ립λλ€! νλͺ© 7 : κ°μ²΄ μμ± μ κ΄νΈ'( )' μ μ€κ΄νΈ'{ }' λ₯Ό ꡬλΆνλΌ ν΅μ¬ : 1. μ€κ΄νΈ μ΄κΈ°νλ κ°μ₯ κ΄λ²μνκ² μ μ©ν μ μλ μ΄κΈ°ν ꡬ문μ΄λ©°, μ’νκΈ° λ³νμ λ°©μ§νλ©°, C++ μ κ°μ₯ μ±κ°μ ꡬ문 ν΄μμμ μμ λ‘λ€. 2. μμ±μ μ€λ²λ‘λ© ν΄μ κ³Όμ μμ μ€κ΄νΈ μ΄κΈ°νλ κ°λ₯ν ν std::initializer_list 맀κ°λ³μκ° μλ μμ±μμ λΆν©νλ€. 3. κ΄νΈμ μ€κ΄νΈμ μ νμ΄ μλ―Έ μλ μ°¨μ΄λ₯Ό λ§λλ μλ μΈμ λ κ°λ‘ std::vector μ μμ±νλ κ²μ΄λ€. 4. ν νλ¦Ώ μμμ κ°μ²΄λ₯Ό μμ±ν λ κ΄νΈλ₯Ό μ¬μ©ν κ²μΈμ§ μ€κ΄νΈ..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/dfx9Yo/btrPBr7Oj74/lIkzjxCpujyP8fv09meBu1/img.png)
C++ νλ‘κ·Έλλ¨Έμ νλ μμ΄μ λ°μ΄λΈμΈ, μ€μ½§ λ§μ΄μ΄μ€μ Modern Effective C++ λ₯Ό μ½κ³ κΈ°μ΅ν λ΄μ©μ μμ½νκ³ μμ΅λλ€. κΌ μ½μ΄λ³΄μκΈΈ μΆμ²λ립λλ€! νλͺ© 6 : auto κ° μμΉ μμ νμμΌλ‘ μ°μλ λλ λͺ μμ νμμ μ΄κΈ°μΉλ₯Ό μ¬μ©νλΌ ν΅μ¬ : 1. "보μ΄μ§ μλ" λ리μ νμ λλ¬Έμ auto κ° μ΄κΈ°ν ννμμ νμμ "μλͺ»" μ°μν μ μλ€. 2. νμ λͺ μ μ΄κΈ°μΉ κ΄μ©κ΅¬λ auto κ° μνλ νμμ μ°μνλλ‘ κ°μ νλ€. λ€μ μμλ₯Ό 보μ. class Widget {}; std::vector feature(const Widget& w) { return std::vector(10); } void processWidget(Widget w, bool highPriority) { /* D..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/RSXeB/btrPyF7jhmJ/pJ6idNKBVvq7CbwiPvTea0/img.png)
C++ νλ‘κ·Έλλ¨Έμ νλ μμ΄μ λ°μ΄λΈμΈ, μ€μ½§ λ§μ΄μ΄μ€μ Modern Effective C++ λ₯Ό μ½κ³ κΈ°μ΅ν λ΄μ©μ μμ½νκ³ μμ΅λλ€. κΌ μ½μ΄λ³΄μκΈΈ μΆμ²λ립λλ€! νλͺ© 5 : λͺ μμ νμ μ μΈλ³΄λ€λ auto λ₯Ό μ νΈνλΌ ν΅μ¬ : 1. auto λ³μλ λ°λμ μ΄κΈ°ν ν΄μΌ νλ©°, μ΄μμ± λλ ν¨μ¨μ± λ¬Έμ λ₯Ό μ λ°ν μ μλ νμ λΆμΌμΉκ° λ°μνλ κ²½μ°κ° κ±°μ μμΌλ©°, λμ²΄λ‘ λ³μμ νμμ λͺ μμ μΌλ‘ μ§μ ν λλ³΄λ€ νμλλ λ μ λ€. 2. auto λ‘ νμμ μ§μ ν λ³μλ νλͺ© 2 μ νλͺ© 6 μμ μ€λͺ ν λ¬Έμ μ λ€μ κ²ͺμ μ μλ€. μλ μμλ₯Ό 보면, auto λ₯Ό μ°λ κ²μ΄ μ¬λ¬λͺ¨λ‘ νλ₯νλ€λ κ²μ νλμ νμ ν μ μμ κ²μ΄λ€. template void print_from_b_to_e(It b, It e)..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/bl0xsO/btrPApJazQQ/5zfgpcG3Hv1dxgBkuKw6k0/img.png)
C++ νλ‘κ·Έλλ¨Έμ νλ μμ΄μ λ°μ΄λΈμΈ, μ€μ½§ λ§μ΄μ΄μ€μ Modern Effective C++ λ₯Ό μ½κ³ κΈ°μ΅ν λ΄μ©μ μμ½νκ³ μμ΅λλ€. κΌ μ½μ΄λ³΄μκΈΈ μΆμ²λ립λλ€! νλͺ© 4 : μ°μλ νμμ νμ νλ λ°©λ²μ μμλλΌ ν΅μ¬ : 1. μ»΄νμΌλ¬κ° μ°μνλ νμμ IDE νΈμ§κΈ°λ μ»΄νμΌλ¬ μ€λ₯ λ©μμ§, Boost TypeIndex λΌμ΄λΈλ¬λ¦¬λ₯Ό μ΄μ©ν΄μ νμ ν μ μλ κ²½μ°κ° λ§λ€. 2. μΌλΆ λꡬμ κ²°κ³Όλ μ μ©νμ§λ μκ³ λΆμ νν μ μμΌλ―λ‘, C++ μ νμ μ°μ κ·μΉλ€μ μ λλ‘ μ΄ν΄νλ κ²μ μ¬μ ν νμν μΌμ΄λ€. νμ μ°μ μ 보λ₯Ό μ»λ λ°©λ²μ μΈ κ°μ§ μμ μΌλ‘ λΆλ₯ν μ μλ€. 1. IDE νΈμ§κΈ° 2. μ»΄νμΌλ¬μ μ§λ¨ λ©μμ§ decltype μ μ¬μ©νλ©΄ λ€μκ³Ό κ°μ κ²½μ°, νμ μ μ»΄νμΌ νμμ μμλΌ μ..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/PIp0V/btrPAqagRmZ/dg8w8S6PbfrjR8yaK8uw3K/img.png)
C++ νλ‘κ·Έλλ¨Έμ νλ μμ΄μ λ°μ΄λΈμΈ, μ€μ½§ λ§μ΄μ΄μ€μ Modern Effective C++ λ₯Ό μ½κ³ κΈ°μ΅ν λ΄μ©μ μμ½νκ³ μμ΅λλ€. κΌ μ½μ΄λ³΄μκΈΈ μΆμ²λ립λλ€! νλͺ© 3 : decltype μ μλ λ°©μμ μμ§νλΌ ν΅μ¬ : 1. decltype μ νμ λ³μλ ννμμ νμμ μ무 μμ μμ΄ λ³΄κ³ νλ€. 2. decltype μ νμμ΄ T μ΄κ³ μ΄λ¦μ΄ μλ μΌκ° ννμμ λν΄μλ νμ T& νμμ λ³΄κ³ νλ€. 3. C++14 λ decltype(auto) λ₯Ό μ§μνλ€. decltype(auto)λ auto μ²λΌ μ΄κΈ°μΉλ‘λΆν° νμμ μ°μνμ§λ§, κ·Έ νμ μ°μ κ³Όμ μμ decltype μ κ·μΉλ€μ μ μ©νλ€. 컨ν μ΄λμ operator[ ] λ°ν νμμ μμ½κ² ννν΄ λ³΄μ. template auto auth..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/b9tTL1/btrPBrNx0so/bKVDpXsy1PDWuxGGNxudO0/img.png)
C++ νλ‘κ·Έλλ¨Έμ νλ μμ΄μ λ°μ΄λΈμΈ, μ€μ½§ λ§μ΄μ΄μ€μ Modern Effective C++ λ₯Ό μ½κ³ κΈ°μ΅ν λ΄μ©μ μμ½νκ³ μμ΅λλ€. κΌ μ½μ΄λ³΄μκΈΈ μΆμ²λ립λλ€! νλͺ© 2 : auto μ νμ μ°μ κ·μΉμ μμ§νλΌ ν΅μ¬ : 1. auto νμ μ°μμ λμ²΄λ‘ ν νλ¦Ώ νμ μ°μκ³Ό κ°μ§λ§, auto νμ μ°μμ μ€κ΄νΈ μ΄κΈ°μΉκ° std::initializer_list λ₯Ό λνλΈλ€κ³ κ°μ νλ λ°λ©΄, ν νλ¦Ώ νμ μ°μμ κ·Έλ μ§ μλ€λ μ°¨μ΄κ° μλ€. 2. ν¨μμ λ°ν νμμ΄λ λλ€ λ§€κ°λ³μμ μ°μΈ auto μ λν΄μλ auto νμ μ°μμ΄ μλλΌ ν νλ¦Ώ νμ μ°μμ΄ μ μ©λλ€. ν κ°μ§ κΈ°μ΄ν μμΈλ₯Ό λΉΌλ©΄, auto νμ μ°μμ΄ κ³§ ν νλ¦Ώ νμ μ°μμ΄λ€. κ·Έ κΈ°μ΄ν ν κ°μ§ λ€λ₯Έ μμΈλ₯Ό 보μ. #include #i..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/br9gyh/btrPz0QfY0t/uoJ0eUsV1lEHOksHHpSbLK/img.png)
C++ νλ‘κ·Έλλ¨Έμ νλ μμ΄μ λ°μ΄λΈμΈ, μ€μ½§ λ§μ΄μ΄μ€μ Modern Effective C++ λ₯Ό μ½κ³ κΈ°μ΅ν λ΄μ©μ μμ½νκ³ μμ΅λλ€. κΌ μ½μ΄λ³΄μκΈΈ μΆμ²λ립λλ€! νλͺ© 1 : ν νλ¦Ώ νμ μ°μ κ·μΉμ μμ§νλΌ ν΅μ¬ : 1. ν νλ¦Ώ νμ μ°μ λμ€ μ°Έμ‘° νμμ μΈμλ€μ λΉμ°Έμ‘°λ‘ μ·¨κΈλλ€. μ¦, μ°Έμ‘°μ±μ΄ 무μλλ€. 2. λ³΄νΈ μ°Έμ‘° 맀κ°λ³μμ λν νμ μ°μ κ³Όμ μμ μΌκ° μΈμλ€μ νΉλ³νκ² μ·¨κΈλλ€. 3. κ° μ λ¬ λ°©μμ 맀κ°λ³μμ λν νμ μ°μ κ³Όμ μμ const λλ volatile(λλ κ·Έ λ λ€μΈ) μΈμλ λΉ const, λΉ volatile μΈμλ‘ μ·¨κΈλλ€. 4. ν νλ¦Ώ νμ μ°μ κ³Όμ μμ λ°°μ΄μ΄λ ν¨μ μ΄λ¦μ ν΄λΉνλ μΈμλ ν¬μΈν°λ‘ λΆκ΄΄νλ€. λ¨, κ·Έλ° μΈμκ° μ°Έμ‘°λ₯Ό μ΄κΈ°ννλλ° μ°μ΄λ κ²½μ°,..