λͺ©λ‘μ 체 κΈ (1103)
KoreanFoodie's Study
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/IlgaY/btrPz2UPjda/V3QCG0wXYdE5vmyOrd6jBK/img.png)
C++ νλ‘κ·Έλλ¨Έμ νλ μμ΄μ λ°μ΄λΈμΈ, μ€μ½§ λ§μ΄μ΄μ€μ Modern Effective C++ λ₯Ό μ½κ³ κΈ°μ΅ν λ΄μ©μ μμ½νκ³ μμ΅λλ€. κΌ μ½μ΄λ³΄μκΈΈ μΆμ²λ립λλ€! νλͺ© 20 : std::shared_ptr μ²λΌ μλνλ λμμ μμ μλ μλ ν¬μΈν°κ° νμνλ©΄ std::weak_ptr λ₯Ό μ¬μ©νλΌ ν΅μ¬ : 1. std::shared_ptr μ²λΌ μλνλ λμμ μμ μλ μλ ν¬μΈν°κ° νμνλ©΄ std::weak_ptr λ₯Ό μ¬μ©νλΌ 2. std::weak_ptr μ μ μ¬μ μΈ μ©λλ‘λ μΊμ±, κ΄μ°°μ λͺ©λ‘, κ·Έλ¦¬κ³ std::shared_ptr μν κ³ λ¦¬ λ°©μ§κ° μλ€. std::weak_ptr λ std::shared_ptr μ²λΌ λμνλ, κ°μ²΄μ μ°Έμ‘° νμμλ μν₯μ λΌμΉμ§ μλλ€. λμμ μμ std::..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/bxQYgW/btrPzNcpITa/e94qKNy3IIkiR8ysJcIyM1/img.png)
C++ νλ‘κ·Έλλ¨Έμ νλ μμ΄μ λ°μ΄λΈμΈ, μ€μ½§ λ§μ΄μ΄μ€μ Modern Effective C++ λ₯Ό μ½κ³ κΈ°μ΅ν λ΄μ©μ μμ½νκ³ μμ΅λλ€. κΌ μ½μ΄λ³΄μκΈΈ μΆμ²λ립λλ€! νλͺ© 19 : μμ κΆ κ³΅μ μμμ κ΄λ¦¬μλ std::shared_ptr λ₯Ό μ¬μ©νλΌ ν΅μ¬ : 1. std::shared_ptr λ μμμ 곡μ μμμ μλͺ μ νΈλ¦¬νκ²(μ°λ κΈ° μκ±°μ 맑길 λλ§νΌμ΄λ) κ΄λ¦¬ν μ μλ μλ¨μ μ 곡νλ€. 2. λμ²΄λ‘ std::shared_ptr κ°μ²΄λ κ·Έ ν¬κΈ°κ° std::shared_ptr κ°μ²΄μ λ λ°°μ΄λ©°, μ μ΄ λΈλ‘μ κ΄λ ¨λ μΆκ° λΆλ΄μ μ λ°νλ©°, μμμ μ°Έμ‘° νμ μ‘°μμ μꡬνλ€. 3. μμμ κΈ°λ³Έμ μΌλ‘ delete λ₯Ό ν΅ν΄ νκ΄΄λλ, 컀μ€ν μμ μλ μ§μλλ€. μμ μμ νμμ std::shared_ptr ..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/tQVBu/btrPzLZ0mfI/Y0Vn8zearTCEXysP2rPkBK/img.png)
C++ νλ‘κ·Έλλ¨Έμ νλ μμ΄μ λ°μ΄λΈμΈ, μ€μ½§ λ§μ΄μ΄μ€μ Modern Effective C++ λ₯Ό μ½κ³ κΈ°μ΅ν λ΄μ©μ μμ½νκ³ μμ΅λλ€. κΌ μ½μ΄λ³΄μκΈΈ μΆμ²λ립λλ€! νλͺ© 18 : μμ κΆ λ μ μμμ κ΄λ¦¬μλ std::unique_ptr λ₯Ό μ¬μ©νλΌ ν΅μ¬ : 1. std::unique_ptr λ λ μ μμ κΆ μλ―Έλ‘ μ κ°μ§ μμμ κ΄λ¦¬λ₯Ό μν, μκ³ λΉ λ₯Έ μ΄λ μ μ© λλν ν¬μΈν°μ΄λ€. 2. κΈ°λ³Έμ μΌλ‘ μμ νκ΄΄λ delete λ₯Ό ν΅ν΄ μΌμ΄λλ, 컀μ€ν μμ μλ₯Ό μ§μ ν μ μλ€. μν μλ μμ μλ ν¨μ ν¬μΈν°λ₯Ό μ¬μ©νλ©΄ std::unique_ptr κ°μ²΄μ ν¬κΈ°κ° 컀μ§λ€. 3. std::unique_ptr λ₯Ό std::shared_ptr λ‘ μμ½κ² λ³νν μ μλ€. C++ μμ μ ν¬μΈν°(raw pointe..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/bwYKrd/btrPz2N3Pfd/VePLyUEuJdqqJIXWpMRFoK/img.png)
C++ νλ‘κ·Έλλ¨Έμ νλ μμ΄μ λ°μ΄λΈμΈ, μ€μ½§ λ§μ΄μ΄μ€μ Modern Effective C++ λ₯Ό μ½κ³ κΈ°μ΅ν λ΄μ©μ μμ½νκ³ μμ΅λλ€. κΌ μ½μ΄λ³΄μκΈΈ μΆμ²λ립λλ€! νλͺ© 17 : νΉμ λ©€λ² ν¨μλ€μ μλ μμ± μ‘°κ±΄μ μμ§νλΌ ν΅μ¬ : 1. μ»΄νμΌλ¬κ° μ€μ€λ‘ μμ±ν μ μλ λ©€λ² ν¨μλ€, μ¦ κΈ°λ³Έ μμ±μμ μλ©Έμ, λ³΅μ¬ μ°μ°λ€, μ΄λ μ°μ°λ€μ κ°λ¦¬μΌ νΉμ λ©€λ² ν¨μλΌκ³ νλ€. 2. μ΄λ μ°μ°λ€μ μ΄λ μ°μ°λ€μ΄λ λ³΅μ¬ μ°μ°λ€, μλ©Έμκ° λͺ μμ μΌλ‘ μ μΈλμ΄ μμ§ μμ ν΄λμ€μ λν΄μλ§ μλμΌλ‘ μμ±λλ€. 3. λ³΅μ¬ μμ±μλ λ³΅μ¬ μμ±μκ° λͺ μμ μΌλ‘ μ μΈλμ΄ μμ§ μμ ν΄λμ€μ λν΄μλ§ μλμΌλ‘ μμ±λλ©°, λ§μΌ μ΄λ μ°μ°μ΄ νλλΌλ μ μΈλμ΄ μμΌλ©΄ μμ λλ€. λ³΅μ¬ λ°°μ μ°μ°μλ λ³΅μ¬ λ°°μ μ°μ°μκ° λͺ μμ μΌλ‘ ..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/dKGAYo/btrPx05h0dq/V6bRkQUjelhnQjYWuIAb40/img.png)
C++ νλ‘κ·Έλλ¨Έμ νλ μμ΄μ λ°μ΄λΈμΈ, μ€μ½§ λ§μ΄μ΄μ€μ Modern Effective C++ λ₯Ό μ½κ³ κΈ°μ΅ν λ΄μ©μ μμ½νκ³ μμ΅λλ€. κΌ μ½μ΄λ³΄μκΈΈ μΆμ²λ립λλ€! νλͺ© 16 : const λ©€λ² ν¨μλ₯Ό μ€λ λμ μμ νκ² μμ±νλΌ ν΅μ¬ : 1. λμμ λ¬Έλ§₯μμ μ°μ΄μ§ μμ κ²μ΄ νμ€ν κ²½μ°κ° μλλΌλ©΄, const λ©€λ² ν¨μλ μ€λ λμ μμ νκ² μμ±νλΌ. 2. std::atomic λ³μλ mutex μ λΉν΄ μ±λ₯μμ μ΄μ μ΄ μμ§λ§, νλμ λ³μ λλ λ©λͺ¨λ¦¬ μ₯μλ₯Ό λ€λ£° λμλ§ μ ν©νλ€. λ€μκ³Ό κ°μ λ€νμ ν΄λμ€κ° μλ€κ³ νμ. class Polynomial { public: using RootsType = std::vector; RootsType roots() const { // μΊμκ° μ ν¨νμ§ μμΌλ©΄ ..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/buOezW/btrPzL6MIiU/VpuqRNVUdaTmxC7nOqitG1/img.png)
C++ νλ‘κ·Έλλ¨Έμ νλ μμ΄μ λ°μ΄λΈμΈ, μ€μ½§ λ§μ΄μ΄μ€μ Modern Effective C++ λ₯Ό μ½κ³ κΈ°μ΅ν λ΄μ©μ μμ½νκ³ μμ΅λλ€. κΌ μ½μ΄λ³΄μκΈΈ μΆμ²λ립λλ€! νλͺ© 15 : κ°λ₯νλ©΄ νμ constexpr λ₯Ό μ¬μ©νλΌ ν΅μ¬ : 1. constexpr κ°μ²΄λ const μ΄λ©°, μ»΄νμΌ λμ€μ μλ €μ§λ κ°λ€λ‘ μ΄κΈ°νλλ€. 2. constexpr ν¨μλ κ·Έ κ°μ΄ μ»΄νμΌ λμ€μ μλ €μ§λ μΈμλ€λ‘ νΈμΆνλ κ²½μ°μλ μ»΄νμΌ μμ κ²°κ³Όλ₯Ό μ°μΆνλ€. 3. constexpr κ°μ²΄λ ν¨μλ λΉconstexpr κ°μ²΄λ ν¨μλ³΄λ€ κ΄λ²μν λ¬Έλ§₯μμ μ¬μ©ν μ μλ€. 4. constexpr μ κ°μ²΄λ ν¨μμ μΈν°νμ΄μ€μ μΌλΆμ΄λ€. κ°λ μ μΌλ‘, constexpr λ μ΄λ ν κ°μ΄ λ¨μ§ μμμΌ λΏλ§ μλλΌ μ»΄νμΌ μμ μμ μλ €μ§..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/bKYRgT/btrPBseATUV/RqiyPbrN9ikAWUFyKKAc9K/img.png)
C++ νλ‘κ·Έλλ¨Έμ νλ μμ΄μ λ°μ΄λΈμΈ, μ€μ½§ λ§μ΄μ΄μ€μ Modern Effective C++ λ₯Ό μ½κ³ κΈ°μ΅ν λ΄μ©μ μμ½νκ³ μμ΅λλ€. κΌ μ½μ΄λ³΄μκΈΈ μΆμ²λ립λλ€! νλͺ© 14 : μμΈλ₯Ό λ°©μΆνμ§ μμ ν¨μλ noexcept λ‘ μ μΈνλΌ ν΅μ¬ : 1. noexcept λ ν¨μμ μΈν°νμ΄μ€μ μΌλΆμ΄λ€. μ΄λ νΈμΆμκ° noexcept μ¬λΆμ μμ‘΄ν μ μμμ λ»νλ€. 2. noexcept ν¨μλ λΉ noexcept ν¨μλ³΄λ€ μ΅μ νμ μ¬μ§κ° ν¬λ€. 3. noexcept λ μ΄λ μ°μ°λ€κ³Ό swap, λ©λͺ¨λ¦¬ ν΄μ ν¨μλ€, κ·Έλ¦¬κ³ μλ©Έμλ€μ νΉνλ μ μ©νλ€. 4. λλΆλΆμ ν¨μλ noexcept κ° μλλΌ μμΈμ μ€λ¦½μ μ΄λ€. ν¨μλ₯Ό noexcept λ‘ μ μΈν κ²μΈμ§μ μ¬λΆλ μΈν°νμ΄μ€ μ€κ³μμ λ¬Έμ μΈλ°, μ΄λ ν΄λΌ..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/8TL1o/btrPymAkOUi/90KSfPSSf6vUNRIIgMg0S0/img.png)
C++ νλ‘κ·Έλλ¨Έμ νλ μμ΄μ λ°μ΄λΈμΈ, μ€μ½§ λ§μ΄μ΄μ€μ Modern Effective C++ λ₯Ό μ½κ³ κΈ°μ΅ν λ΄μ©μ μμ½νκ³ μμ΅λλ€. κΌ μ½μ΄λ³΄μκΈΈ μΆμ²λ립λλ€! νλͺ© 13 : iterator λ³΄λ€ const_iterator λ₯Ό μ νΈνλΌ ν΅μ¬ : 1. iterator λ³΄λ€ const_iterator λ₯Ό μ νΈνλΌ. 2. μ΅λν μΌλ°μ μΈ μ½λμμλ begin, end, rbegin λ±μ λΉλ©€λ² λ²μ λ€μ ν΄λΉ λ©€λ² ν¨μλ€λ³΄λ€ μ νΈνλΌ. C++98 μμλ, const_iterator μ¬μ©μ΄ μ½μ§ μμλ€. typedef std::vector::iterator IterT; typedef std::vector::const_iterator ConstIterT; std::vector values; ... ConstI..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/RSDbx/btrPzBwsizt/5fCuFbXUyrwvzNWF4QyGU0/img.png)
C++ νλ‘κ·Έλλ¨Έμ νλ μμ΄μ λ°μ΄λΈμΈ, μ€μ½§ λ§μ΄μ΄μ€μ Modern Effective C++ λ₯Ό μ½κ³ κΈ°μ΅ν λ΄μ©μ μμ½νκ³ μμ΅λλ€. κΌ μ½μ΄λ³΄μκΈΈ μΆμ²λ립λλ€! νλͺ© 12 : μ¬μ μ ν¨μλ€μ override λ‘ μ μΈνλΌ ν΅μ¬ : 1. μ¬μ μ ν¨μλ override λ‘ μ μΈνλΌ. 2. λ©€λ² ν¨μ μ°Έμ‘° νμ μ¬(reference qualifier)λ₯Ό μ΄μ©νλ©΄ λ©€λ² ν¨μκ° νΈμΆλλ κ°μ²΄(*this)μ μΌκ° λ²μ κ³Ό μ€λ₯Έκ° λ²μ μ λ€λ₯Έ λ°©μμΌλ‘ μ²λ¦¬ν μ μλ€. κΈ°λ° ν΄λμ€μμ μ μλ κ°μ ν¨μκ° νμ ν΄λμ€μμ μ¬μ μλκΈ° μν΄μλ λ€μκ³Ό κ°μ 쑰건λ€μ΄ λ§μ‘± λμ΄μΌ νλ€. κΈ°λ° ν΄λμ€ ν¨μκ° κ°μν¨μ μ΄μ΄μΌ ν¨ κΈ°λ° ν¨μμ νμ ν¨μμ μ΄λ¦μ΄ λμΌν΄μΌ ν¨(μλ©Έμ μ μΈ) κΈ°λ° ν¨μμ νμ ν¨μμ 맀κ°λ³μ νμλ€..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/Trooo/btrPzjJreEG/CtdGMqdzw3ytWonsgwhlCK/img.png)
C++ νλ‘κ·Έλλ¨Έμ νλ μμ΄μ λ°μ΄λΈμΈ, μ€μ½§ λ§μ΄μ΄μ€μ Modern Effective C++ λ₯Ό μ½κ³ κΈ°μ΅ν λ΄μ©μ μμ½νκ³ μμ΅λλ€. κΌ μ½μ΄λ³΄μκΈΈ μΆμ²λ립λλ€! νλͺ© 11 : μ μλμ§ μμ λΉκ³΅κ° ν¨μλ³΄λ€ μμ λ ν¨μλ₯Ό μ νΈνλΌ ν΅μ¬ : 1. μ μλμ§ μμ λΉκ³΅κ° ν¨μλ³΄λ€ μμ λ ν¨μλ₯Ό μ νΈνλΌ. 2. λΉλ©€λ² ν¨μμ ν νλ¦Ώ μΈμ€ν΄μ€λ₯Ό λΉλ‘―ν κ·Έ μ΄λ€ ν¨μλ μμ ν μ μλ€. λ€λ₯Έ κ°λ°μμκ² μ 곡ν μ½λλ₯Ό μμ±ν λ, κ·Έ κ°λ°μκ° μ½λμ νΉμ ν¨μλ₯Ό νΈμΆνμ§ λͺ»νκ² νλ κ°μ₯ νν λ°©λ²μ κ·Έλ₯ κ·Έ ν¨μλ₯Ό μ μΈνμ§ μλ κ²μ΄λ€. νμ§λ§ μ»΄νμΌλ¬κ° λλ‘λ ν¨μλ₯Ό μλμΌλ‘ μμ±νλ κ²½μ°κ° μλ€. C++ 98 μμλ private μΌλ‘ μ μΈ ν, μ μλ₯Ό νμ§ μλ λ°©μμΌλ‘ μ΄λ₯Ό λ°©μ§νκΈ°λ νλ€. μ€μ λ‘ μ λ ₯..