λͺ©λ‘μ 체 κΈ (1096)
KoreanFoodie's Study
C++ νλ‘κ·Έλλ¨Έμ νλ μμ΄μ λ°μ΄λΈμΈ, μ€μ½§ λ§μ΄μ΄μ€μ Modern Effective C++ λ₯Ό μ½κ³ κΈ°μ΅ν λ΄μ©μ μμ½νκ³ μμ΅λλ€. κΌ μ½μ΄λ³΄μκΈΈ μΆμ²λ립λλ€! νλͺ© 14 : μμΈλ₯Ό λ°©μΆνμ§ μμ ν¨μλ noexcept λ‘ μ μΈνλΌ ν΅μ¬ : 1. noexcept λ ν¨μμ μΈν°νμ΄μ€μ μΌλΆμ΄λ€. μ΄λ νΈμΆμκ° noexcept μ¬λΆμ μμ‘΄ν μ μμμ λ»νλ€. 2. noexcept ν¨μλ λΉ noexcept ν¨μλ³΄λ€ μ΅μ νμ μ¬μ§κ° ν¬λ€. 3. noexcept λ μ΄λ μ°μ°λ€κ³Ό swap, λ©λͺ¨λ¦¬ ν΄μ ν¨μλ€, κ·Έλ¦¬κ³ μλ©Έμλ€μ νΉνλ μ μ©νλ€. 4. λλΆλΆμ ν¨μλ noexcept κ° μλλΌ μμΈμ μ€λ¦½μ μ΄λ€. ν¨μλ₯Ό noexcept λ‘ μ μΈν κ²μΈμ§μ μ¬λΆλ μΈν°νμ΄μ€ μ€κ³μμ λ¬Έμ μΈλ°, μ΄λ ν΄λΌ..
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..
C++ νλ‘κ·Έλλ¨Έμ νλ μμ΄μ λ°μ΄λΈμΈ, μ€μ½§ λ§μ΄μ΄μ€μ Modern Effective C++ λ₯Ό μ½κ³ κΈ°μ΅ν λ΄μ©μ μμ½νκ³ μμ΅λλ€. κΌ μ½μ΄λ³΄μκΈΈ μΆμ²λ립λλ€! νλͺ© 12 : μ¬μ μ ν¨μλ€μ override λ‘ μ μΈνλΌ ν΅μ¬ : 1. μ¬μ μ ν¨μλ override λ‘ μ μΈνλΌ. 2. λ©€λ² ν¨μ μ°Έμ‘° νμ μ¬(reference qualifier)λ₯Ό μ΄μ©νλ©΄ λ©€λ² ν¨μκ° νΈμΆλλ κ°μ²΄(*this)μ μΌκ° λ²μ κ³Ό μ€λ₯Έκ° λ²μ μ λ€λ₯Έ λ°©μμΌλ‘ μ²λ¦¬ν μ μλ€. κΈ°λ° ν΄λμ€μμ μ μλ κ°μ ν¨μκ° νμ ν΄λμ€μμ μ¬μ μλκΈ° μν΄μλ λ€μκ³Ό κ°μ 쑰건λ€μ΄ λ§μ‘± λμ΄μΌ νλ€. κΈ°λ° ν΄λμ€ ν¨μκ° κ°μν¨μ μ΄μ΄μΌ ν¨ κΈ°λ° ν¨μμ νμ ν¨μμ μ΄λ¦μ΄ λμΌν΄μΌ ν¨(μλ©Έμ μ μΈ) κΈ°λ° ν¨μμ νμ ν¨μμ 맀κ°λ³μ νμλ€..
C++ νλ‘κ·Έλλ¨Έμ νλ μμ΄μ λ°μ΄λΈμΈ, μ€μ½§ λ§μ΄μ΄μ€μ Modern Effective C++ λ₯Ό μ½κ³ κΈ°μ΅ν λ΄μ©μ μμ½νκ³ μμ΅λλ€. κΌ μ½μ΄λ³΄μκΈΈ μΆμ²λ립λλ€! νλͺ© 11 : μ μλμ§ μμ λΉκ³΅κ° ν¨μλ³΄λ€ μμ λ ν¨μλ₯Ό μ νΈνλΌ ν΅μ¬ : 1. μ μλμ§ μμ λΉκ³΅κ° ν¨μλ³΄λ€ μμ λ ν¨μλ₯Ό μ νΈνλΌ. 2. λΉλ©€λ² ν¨μμ ν νλ¦Ώ μΈμ€ν΄μ€λ₯Ό λΉλ‘―ν κ·Έ μ΄λ€ ν¨μλ μμ ν μ μλ€. λ€λ₯Έ κ°λ°μμκ² μ 곡ν μ½λλ₯Ό μμ±ν λ, κ·Έ κ°λ°μκ° μ½λμ νΉμ ν¨μλ₯Ό νΈμΆνμ§ λͺ»νκ² νλ κ°μ₯ νν λ°©λ²μ κ·Έλ₯ κ·Έ ν¨μλ₯Ό μ μΈνμ§ μλ κ²μ΄λ€. νμ§λ§ μ»΄νμΌλ¬κ° λλ‘λ ν¨μλ₯Ό μλμΌλ‘ μμ±νλ κ²½μ°κ° μλ€. C++ 98 μμλ private μΌλ‘ μ μΈ ν, μ μλ₯Ό νμ§ μλ λ°©μμΌλ‘ μ΄λ₯Ό λ°©μ§νκΈ°λ νλ€. μ€μ λ‘ μ λ ₯..
C++ νλ‘κ·Έλλ¨Έμ νλ μμ΄μ λ°μ΄λΈμΈ, μ€μ½§ λ§μ΄μ΄μ€μ Modern Effective C++ λ₯Ό μ½κ³ κΈ°μ΅ν λ΄μ©μ μμ½νκ³ μμ΅λλ€. κΌ μ½μ΄λ³΄μκΈΈ μΆμ²λ립λλ€! νλͺ© 10 : λ²μ μλ enum λ³΄λ€ λ²μ μλ enum μ μ νΈνλΌ ν΅μ¬ : 1. C++98 μ€νμΌμ enum μ μ΄μ λ λ²μ μλ enum μ΄λΌκ³ λΆλ₯Έλ€. 2. λ²μ μλ enum μ μ΄κ±°μλ€μ κ·Έ μμμλ§ λ³΄μΈλ€. μ΄ μ΄κ±°μλ€μ μ€μ§ μΊμ€ν μ ν΅ν΄μλ§ λ€λ₯Έ νμμΌλ‘ λ³νλλ€. 3. λ²μ μλ enum κ³Ό λ²μ μλ enum λͺ¨λ λ°ν νμ μ§μ μ μ§μνλ€. λ²μ μλ enum μ κΈ°λ³Έ λ°ν νμμ int μ΄λ€. λ²μ μλ enum μλ κΈ°λ³Έ λ°ν νμμ΄ μλ€. 4. λ²μ μλ enum μ νμ μ λ°© μ μΈμ΄ κ°λ₯νλ€. λ²μ μλ enu..
C++ νλ‘κ·Έλλ¨Έμ νλ μμ΄μ λ°μ΄λΈμΈ, μ€μ½§ λ§μ΄μ΄μ€μ Modern Effective C++ λ₯Ό μ½κ³ κΈ°μ΅ν λ΄μ©μ μμ½νκ³ μμ΅λλ€. κΌ μ½μ΄λ³΄μκΈΈ μΆμ²λ립λλ€! νλͺ© 9 : typedef λ³΄λ€ λ³μΉ μ μΈμ μ νΈνλΌ ν΅μ¬ : 1. typedef μ ν νλ¦Ώνλ₯Ό μ§μνμ§ μμ§λ§, using μ μ§μνλ€. 2. λ³μΉ ν νλ¦Ώμμλ "::type" μ λ―Έμ΄λ₯Ό λΆμΌ νμκ° μλ€. ν νλ¦Ώ μμμ typedef μ μ§μΉν λμλ "typename" μ λμ¬λ₯Ό λΆμ¬μΌ νλ κ²½μ°κ° λ§λ€. 3. C++14 λ C++11 μ λͺ¨λ νμ νΉμ§ λ³νμ λν using λ€μ μ 곡νλ€. typedef κ³Ό using (λ³μΉ μ μΈ, alias declaration) μ΄ νλ μΌμ λμΌνμ§λ§, using μ΄ λ μ§κ΄μ μ΄λ€. // ν¨μ ν¬..
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); // μ»΄νμΌ λμ§ ..
C++ νλ‘κ·Έλλ¨Έμ νλ μμ΄μ λ°μ΄λΈμΈ, μ€μ½§ λ§μ΄μ΄μ€μ Modern Effective C++ λ₯Ό μ½κ³ κΈ°μ΅ν λ΄μ©μ μμ½νκ³ μμ΅λλ€. κΌ μ½μ΄λ³΄μκΈΈ μΆμ²λ립λλ€! νλͺ© 7 : κ°μ²΄ μμ± μ κ΄νΈ'( )' μ μ€κ΄νΈ'{ }' λ₯Ό ꡬλΆνλΌ ν΅μ¬ : 1. μ€κ΄νΈ μ΄κΈ°νλ κ°μ₯ κ΄λ²μνκ² μ μ©ν μ μλ μ΄κΈ°ν ꡬ문μ΄λ©°, μ’νκΈ° λ³νμ λ°©μ§νλ©°, C++ μ κ°μ₯ μ±κ°μ ꡬ문 ν΄μμμ μμ λ‘λ€. 2. μμ±μ μ€λ²λ‘λ© ν΄μ κ³Όμ μμ μ€κ΄νΈ μ΄κΈ°νλ κ°λ₯ν ν std::initializer_list 맀κ°λ³μκ° μλ μμ±μμ λΆν©νλ€. 3. κ΄νΈμ μ€κ΄νΈμ μ νμ΄ μλ―Έ μλ μ°¨μ΄λ₯Ό λ§λλ μλ μΈμ λ κ°λ‘ std::vector μ μμ±νλ κ²μ΄λ€. 4. ν νλ¦Ώ μμμ κ°μ²΄λ₯Ό μμ±ν λ κ΄νΈλ₯Ό μ¬μ©ν κ²μΈμ§ μ€κ΄νΈ..
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..
C++ νλ‘κ·Έλλ¨Έμ νλ μμ΄μ λ°μ΄λΈμΈ, μ€μ½§ λ§μ΄μ΄μ€μ Modern Effective C++ λ₯Ό μ½κ³ κΈ°μ΅ν λ΄μ©μ μμ½νκ³ μμ΅λλ€. κΌ μ½μ΄λ³΄μκΈΈ μΆμ²λ립λλ€! νλͺ© 5 : λͺ μμ νμ μ μΈλ³΄λ€λ auto λ₯Ό μ νΈνλΌ ν΅μ¬ : 1. auto λ³μλ λ°λμ μ΄κΈ°ν ν΄μΌ νλ©°, μ΄μμ± λλ ν¨μ¨μ± λ¬Έμ λ₯Ό μ λ°ν μ μλ νμ λΆμΌμΉκ° λ°μνλ κ²½μ°κ° κ±°μ μμΌλ©°, λμ²΄λ‘ λ³μμ νμμ λͺ μμ μΌλ‘ μ§μ ν λλ³΄λ€ νμλλ λ μ λ€. 2. auto λ‘ νμμ μ§μ ν λ³μλ νλͺ© 2 μ νλͺ© 6 μμ μ€λͺ ν λ¬Έμ μ λ€μ κ²ͺμ μ μλ€. μλ μμλ₯Ό 보면, auto λ₯Ό μ°λ κ²μ΄ μ¬λ¬λͺ¨λ‘ νλ₯νλ€λ κ²μ νλμ νμ ν μ μμ κ²μ΄λ€. template void print_from_b_to_e(It b, It e)..