λͺ©λ‘μ 체 κΈ (1099)
KoreanFoodie's Study
C++ νλ‘κ·Έλλ¨Έμ νλ μμ΄μ λ°μ΄λΈμΈ, μ€μ½§ λ§μ΄μ΄μ€μ Modern Effective C++ λ₯Ό μ½κ³ κΈ°μ΅ν λ΄μ©μ μμ½νκ³ μμ΅λλ€. κΌ μ½μ΄λ³΄μκΈΈ μΆμ²λ립λλ€! νλͺ© 34 : μΈν°νμ΄μ€ μμκ³Ό ꡬν μμμ μ°¨μ΄λ₯Ό μ λλ‘ νμ νκ³ κ΅¬λ³νμ ν΅μ¬ : 1. μΈν°νμ΄μ€ μμμ ꡬν μμκ³Ό λ€λ₯΄λ€. public μμμμ, νμ ν΄λμ€λ νμ κΈ°λ³Έ ν΄λμ€μ μΈν°νμ΄μ€λ₯Ό λͺ¨λ λ¬Όλ €λ°λλ€. 2. μμ κ°μ ν¨μλ μΈν°νμ΄μ€ μμλ§μ νμ©νλ€. 3. λ¨μ(λΉμμ) κ°μ ν¨μλ μΈν°νμ΄μ€ μμκ³Ό λλΆμ΄ κΈ°λ³Έ ꡬνμ μμλ κ°λ₯νλλ‘ μ§μ νλ€. 4. λΉκ°μ ν¨μλ μΈν°νμ΄μ€ μμκ³Ό λλΆμ΄ νμ ꡬνμ μμλ κ°νλλ‘ μ§μ νλ€. ν΄λμ€ μ€κ³μμ μ μ₯μμ, λ©€λ² ν¨μμ μΈν°νμ΄μ€(μ μΈ)λ§μ νμ ν΄λμ€μ μμλ°κ³ μΆμ λ..
C++ νλ‘κ·Έλλ¨Έμ νλ μμ΄μ λ°μ΄λΈμΈ, μ€μ½§ λ§μ΄μ΄μ€μ Modern Effective C++ λ₯Ό μ½κ³ κΈ°μ΅ν λ΄μ©μ μμ½νκ³ μμ΅λλ€. κΌ μ½μ΄λ³΄μκΈΈ μΆμ²λ립λλ€! νλͺ© 33 : μμλ μ΄λ¦μ μ¨κΈ°λ μΌμ νΌνμ ν΅μ¬ : 1. νμ ν΄λμ€μ μ΄λ¦μ κΈ°λ³Έ ν΄λμ€μ μ΄λ¦μ κ°λ¦°λ€. public μμμμλ μ΄λ° μ΄λ¦ κ°λ¦Ό νμμ λ°λμ§νμ§ μλ€. 2. κ°λ €μ§ μ΄λ¦μ λ€μ λ³Ό μ μκ² νλ λ°©λ²μΌλ‘, using μ μΈ νΉμ μ λ¬ ν¨μλ₯Ό μΈ μ μλ€. λ€μ μμ μ½λλ₯Ό 보μ. class Base { private: int x; public: virtual void mf1() = 0; virtual void mf1(int); virtual void mf2(); void mf3(); void mf3(double); ..
C++ νλ‘κ·Έλλ¨Έμ νλ μμ΄μ λ°μ΄λΈμΈ, μ€μ½§ λ§μ΄μ΄μ€μ Modern Effective C++ λ₯Ό μ½κ³ κΈ°μ΅ν λ΄μ©μ μμ½νκ³ μμ΅λλ€. κΌ μ½μ΄λ³΄μκΈΈ μΆμ²λ립λλ€! νλͺ© 32 : public μμ λͺ¨νμ λ°λμ "is-a(...λ ...μ μΌμ’ μ΄λ€)"λ₯Ό λ°λ₯΄λλ‘ λ§λ€μ ν΅μ¬ : public μμμ μλ―Έλ "is-a(...λ ...μ μΌμ’ )"μ΄λ€. κΈ°λ³Έ ν΄λμ€μ μ μ©λλ λͺ¨λ κ²λ€μ΄ νμ ν΄λμ€μ κ·Έλλ‘ μ μ©λμ΄μΌ νλ€. μλνλ©΄ λͺ¨λ νμ ν΄λμ€ κ°μ²΄λ κΈ°λ³Έ ν΄λμ€ κ°μ²΄μ μΌμ’ μ΄κΈ° λλ¬Έμ΄λ€. μ΄λ€ Base ν΄λμ€λ‘λΆν° Derived ν΄λμ€κ° public μμμ λ°μλ€λ©΄, Derived ν΄λμ€λ Base ν΄λμ€λ³΄λ€ λ νΉμν κ°λ μ λνλ΄κ² λλ€. μ¬μ©μ²κ° μ νλλ€κ³ λ΄λ μ’λ€. public μμμ΄ μ κΈ°..
C++ νλ‘κ·Έλλ¨Έμ νλ μμ΄μ λ°μ΄λΈμΈ, μ€μ½§ λ§μ΄μ΄μ€μ Modern Effective C++ λ₯Ό μ½κ³ κΈ°μ΅ν λ΄μ©μ μμ½νκ³ μμ΅λλ€. κΌ μ½μ΄λ³΄μκΈΈ μΆμ²λ립λλ€! νλͺ© 31 : νμΌ μ¬μ΄μ μ»΄νμΌ μμ‘΄μ±μ μ΅λλ‘ μ€μ΄μ ν΅μ¬ : 1. μ»΄νμΌ μμ‘΄μ±μ μ΅μννλ μμ μ λ°°κ²½μ΄ λλ κ°μ₯ κΈ°λ³Έμ μΈ μμ΄λμ΄λ 'μ μ' λμ μ 'μ μΈ' μ μμ‘΄νκ² λ§λ€μλ κ²μ΄λ€. μ΄ μμ΄λμ΄μ κΈ°λ°ν λ κ°μ§ μ κ·Ό λ°©λ²μ νΈλ€ ν΄λμ€μ μΈν°νμ΄μ€ ν΄λμ€μ΄λ€. 2. λΌμ΄λΈλ¬λ¦¬ ν€λλ κ·Έ μμ²΄λ‘ λͺ¨λ κ²μ κ°μΆμ΄μΌ νλ©° μ μΈλΆλ§ κ°κ³ μλ ννμ¬μΌ νλ€. μ΄ κ·μΉμ ν νλ¦Ώμ΄ μ°μ΄κ±°λ μ°μ΄μ§ μκ±°λ λμΌνκ² μ μ©νμ. C++ λ μΈν°νμ΄μ€μ ꡬνμ κΉλνκ² λΆλ¦¬νλ μΌμ μΌκ°κ²¬μ΄ μλ€. μμλ₯Ό 보μ. class Person {..
C++ νλ‘κ·Έλλ¨Έμ νλ μμ΄μ λ°μ΄λΈμΈ, μ€μ½§ λ§μ΄μ΄μ€μ Modern Effective C++ λ₯Ό μ½κ³ κΈ°μ΅ν λ΄μ©μ μμ½νκ³ μμ΅λλ€. κΌ μ½μ΄λ³΄μκΈΈ μΆμ²λ립λλ€! νλͺ© 30 : μΈλΌμΈ ν¨μλ λ―Έμ£Όμκ³ μ£Όμ λ°μ Έμ μ΄ν΄ν΄ λμ ν΅μ¬ : 1. ν¨μ μΈλΌμΈμ μκ³ , μμ£Ό νΈμΆλλ ν¨μμ λν΄μλ§ νμ. μ΄λ κ² νλ©΄ λλ²κΉ λ° λΌμ΄λΈλ¬λ¦¬μ λ°μ΄λ리 μ κ·Έλ μ΄λκ° μ©μ΄ν΄μ§κ³ , μμΉ« μκΈΈ μ μλ μ½λ λΆνλ¦Ό νμμ΄ μ΅μνλλ©°, νλ‘κ·Έλ¨μ μλ ₯μ΄ λ λΉ¨λΌμ§ μ μλ μ¬μ§κ° μ΅κ³ λ‘ λ§μμ§λ€. 2. ν¨μ ν νλ¦Ώμ΄ λκ° ν€λ νμΌμ λ€μ΄κ°λ€λ μΌλ°μ μΈ λΆλΆλ§ μκ°ν΄μ μ΄λ€μ inline μΌλ‘ μ μΈνλ©΄ μ λλ€. μΈλΌμΈ ν¨μλ₯Ό μ¬μ©νλ©΄ μ»΄νμΌλ¬κ° ν¨μ λ³Έλ¬Έμ λν΄ λ¬Έλ§₯λ³(context-specific) μ΅μ νλ₯Ό κ±ΈκΈ°κ° μ©..
C++ νλ‘κ·Έλλ¨Έμ νλ μμ΄μ λ°μ΄λΈμΈ, μ€μ½§ λ§μ΄μ΄μ€μ Modern Effective C++ λ₯Ό μ½κ³ κΈ°μ΅ν λ΄μ©μ μμ½νκ³ μμ΅λλ€. κΌ μ½μ΄λ³΄μκΈΈ μΆμ²λ립λλ€! νλͺ© 29 : μμΈ μμ μ±μ΄ ν보λλ κ·Έλ μν΄ μΈμ°κ³ λ μΈμ°μ! ν΅μ¬ : 1. μμΈ μμ μ±μ κ°μΆ ν¨μλ μ€ν μ€ μμΈκ° λ°μλλλΌλ μμμ λμΆμν€μ§ μμΌλ©° μλ£κ΅¬μ‘°λ₯Ό λλ½ν μ±λ‘ λ΄λ²λ € λμ§ μλλ€. μ΄λ° ν¨μλ€μ΄ μ 곡ν μ μλ μμΈ μμ μ± λ³΄μ₯μ κΈ°λ³Έμ μΈ λ³΄μ₯, κ°λ ₯ν 보μ₯, μμΈ κΈμ§ 보μ₯μ΄ μλ€. 2. κ°λ ₯ν μμΈ μμ μ± λ³΄μ₯μ '볡μ¬-ν-λ§λ°κΎΈκΈ°' λ°©λ²μ μ¨μ ꡬνν μ μμ§λ§, λͺ¨λ ν¨μμ λν΄ κ°λ ₯ν 보μ₯μ΄ μ€μ©μ μΈ κ²μ μλλ€. 3. μ΄λ€ ν¨μκ° μ 곡νλ μμΈ μμ μ± λ³΄μ₯μ κ°λλ, κ·Έ ν¨μκ° λ΄λΆμ μΌλ‘ νΈμΆνλ ν¨μλ€..
C++ νλ‘κ·Έλλ¨Έμ νλ μμ΄μ λ°μ΄λΈμΈ, μ€μ½§ λ§μ΄μ΄μ€μ Modern Effective C++ λ₯Ό μ½κ³ κΈ°μ΅ν λ΄μ©μ μμ½νκ³ μμ΅λλ€. κΌ μ½μ΄λ³΄μκΈΈ μΆμ²λ립λλ€! νλͺ© 28 : λ΄λΆμμ μ¬μ©νλ κ°μ²΄μ λν 'νΈλ€'μ λ°ννλ μ½λλ λλλ‘ νΌνμ ν΅μ¬ : μ΄λ€ κ°μ²΄μ λ΄λΆμμμ λν νΈλ€(μ°Έμ‘°μ, ν¬μΈν°, λ°λ³΅μ) λ₯Ό λ°ννλ κ²μ λλλ‘ νΌνμ. μΊ‘μν μ λλ₯Ό λμ΄κ³ , μμ λ©€λ² ν¨μκ° κ°μ²΄μ μμμ±μ μ μ§ν μ±λ‘ λμν μ μλλ‘ νλ©°, 무ν¨μ°Έμ‘° νΈλ€μ΄ μκΈ°λ κ²½μ°λ₯Ό μ΅μνν μ μλ€. ν΄λμ€ λ΄λΆμ λ°μ΄ν°λ₯Ό μ°Έμ‘°μλ‘ λ°ννλ κ²μ μ£Όμν΄μΌ νλ€. λ€μ μμλ₯Ό 보μ. clas Point { public: Point(int x, int y); ... void setX(int newVal); voi..
C++ νλ‘κ·Έλλ¨Έμ νλ μμ΄μ λ°μ΄λΈμΈ, μ€μ½§ λ§μ΄μ΄μ€μ Modern Effective C++ λ₯Ό μ½κ³ κΈ°μ΅ν λ΄μ©μ μμ½νκ³ μμ΅λλ€. κΌ μ½μ΄λ³΄μκΈΈ μΆμ²λ립λλ€! νλͺ© 27 : μΊμ€ν μ μ μ½, λ μ μ½! μμ§ λ§μ ν΅μ¬ : 1. λ€λ₯Έ λ°©λ²μ΄ κ°λ₯νλ€λ©΄ μΊμ€ν μ νΌνμ. νΉν μν μ±λ₯μ λ―Όκ°ν μ½λμμ dynamic_cast λ λͺ λ²μ΄κ³ λ€μ μκ°νμ. μ€κ³ μ€μ μΊμ€ν μ΄ νμν΄μ‘λ€λ©΄, μΊμ€ν μ μ°μ§ μλ λ€λ₯Έ λ°©λ²μ μλν΄ λ³΄μ. 2. μΊμ€ν μ΄ μ΄μ© μ μμ΄ νμνλ€λ©΄, ν¨μ μμ μ¨κΈΈ μ μλλ‘ ν΄ λ³΄μ. μ΄λ κ² νλ©΄ μ΅μν μ¬μ©μλ μμ μ μ½λμ μΊμ€ν μ λ£μ§ μκ³ μ΄ ν¨μλ₯Ό νΈμΆν μ μκ² λλ€. 3. ꡬν μ€νμΌμ μΊμ€νΈλ₯Ό μ°λ €κ±°λ C++ μ€νμΌμ μΊμ€νΈλ₯Ό μ νΈνμ. λ°κ²¬νκΈ°λ μ½κ³ , μ€κ³..
C++ νλ‘κ·Έλλ¨Έμ νλ μμ΄μ λ°μ΄λΈμΈ, μ€μ½§ λ§μ΄μ΄μ€μ Modern Effective C++ λ₯Ό μ½κ³ κΈ°μ΅ν λ΄μ©μ μμ½νκ³ μμ΅λλ€. κΌ μ½μ΄λ³΄μκΈΈ μΆμ²λ립λλ€! νλͺ© 26 : λ³μ μ μλ λ¦μΆ μ μλ λ°κΉμ§ λ¦μΆλ κ·Όμ±μ λ°ννμ ν΅μ¬ : λ³μ μ μλ λ¦μΆ μ μμ λκΉμ§ λ¦μΆμ. νλ‘κ·Έλ¨μ΄ λ κΉλν΄μ§λ©° ν¨μ¨λ μ’μμ§λ€! λ€μ μμλ₯Ό 보μ. std::string encryptPassword(const std::string& password) { using namespace std; string encrypted; // 1. encrypted μ κ΄λ ¨ μλ μΌ ... // 2. encrypted μ κ΄λ ¨ μλ μΌ ... return encrypted; } 1λ²μμ μμΈκ° λ°μν΄μ μλ―Έμκ² encr..
C++ νλ‘κ·Έλλ¨Έμ νλ μμ΄μ λ°μ΄λΈμΈ, μ€μ½§ λ§μ΄μ΄μ€μ Modern Effective C++ λ₯Ό μ½κ³ κΈ°μ΅ν λ΄μ©μ μμ½νκ³ μμ΅λλ€. κΌ μ½μ΄λ³΄μκΈΈ μΆμ²λ립λλ€! νλͺ© 25 : μμΈλ₯Ό λμ§μ§ μλ swap μ λν μ§μλ μκ°ν΄ 보μ ν΅μ¬ : 1. std::swap μ΄ μ¬μ©μ μ μ νμ μ λν΄ λλ¦¬κ² λμν μ¬μ§κ° μλ€λ©΄ swap λ©€λ² ν¨μλ₯Ό μ 곡νμ. μ΄ λ©€λ² swap μ μμΈλ₯Ό λμ§μ§ μλλ‘ λ§λ€μ. 2. λ©€λ² swap μ μ 곡νμΌλ©΄, μ΄ λ©€λ²λ₯Ό νΈμΆνλ λΉλ©€λ² swap λ μ 곡νμ. ν΄λμ€(ν νλ¦Ώμ΄ μλ)μ λν΄μλ, std::swap λ νΉμνν΄ λμ. 3. μ¬μ©μ μ μ₯μμ swap μ νΈμΆν λλ, std::swap μ λν using μ μΈμ λ£μ΄ μ€ νμ λ€μμ€νμ΄μ€ νμ μμ΄ swap μ..