λͺ©λ‘μ 체 κΈ (1110)
KoreanFoodie's Study
C++ νλ‘κ·Έλλ¨Έμ νλ μμ΄μ λ°μ΄λΈμΈ, μ€μ½§ λ§μ΄μ΄μ€μ Modern Effective C++ λ₯Ό μ½κ³ κΈ°μ΅ν λ΄μ©μ μμ½νκ³ μμ΅λλ€. κΌ μ½μ΄λ³΄μκΈΈ μΆμ²λ립λλ€! νλͺ© 25 : μμΈλ₯Ό λμ§μ§ μλ swap μ λν μ§μλ μκ°ν΄ 보μ ν΅μ¬ : 1. std::swap μ΄ μ¬μ©μ μ μ νμ μ λν΄ λλ¦¬κ² λμν μ¬μ§κ° μλ€λ©΄ swap λ©€λ² ν¨μλ₯Ό μ 곡νμ. μ΄ λ©€λ² swap μ μμΈλ₯Ό λμ§μ§ μλλ‘ λ§λ€μ. 2. λ©€λ² swap μ μ 곡νμΌλ©΄, μ΄ λ©€λ²λ₯Ό νΈμΆνλ λΉλ©€λ² swap λ μ 곡νμ. ν΄λμ€(ν νλ¦Ώμ΄ μλ)μ λν΄μλ, std::swap λ νΉμνν΄ λμ. 3. μ¬μ©μ μ μ₯μμ swap μ νΈμΆν λλ, std::swap μ λν using μ μΈμ λ£μ΄ μ€ νμ λ€μμ€νμ΄μ€ νμ μμ΄ swap μ..
C++ νλ‘κ·Έλλ¨Έμ νλ μμ΄μ λ°μ΄λΈμΈ, μ€μ½§ λ§μ΄μ΄μ€μ Modern Effective C++ λ₯Ό μ½κ³ κΈ°μ΅ν λ΄μ©μ μμ½νκ³ μμ΅λλ€. κΌ μ½μ΄λ³΄μκΈΈ μΆμ²λ립λλ€! νλͺ© 24 : νμ λ³νμ΄ λͺ¨λ λ§€κ°λ³μμ λν΄ μ μ©λμ΄μΌ νλ€λ©΄ λΉλ©€λ² ν¨μλ₯Ό μ μΈνμ ν΅μ¬ : μ΄λ€ ν¨μμ λ€μ΄κ°λ λͺ¨λ λ§€κ°λ³μ(this ν¬μΈν°κ° κ°λ¦¬ν€λ κ°μ²΄λ ν¬ν¨ν΄μ) μ λν΄ νμ λ³νμ ν΄ μ€ νμκ° μλ€λ©΄, κ·Έ ν¨μλ λΉλ©€λ²μ΄μ΄μΌ νλ€. μ 리μλ₯Ό λνλ΄λ ν΄λμ€κ° μλ€κ³ νκ³ , κ³±μ μ°μ°μ λ§λ λ€κ³ κ°μ νμ. class Rational { public: Rational(int numerator = 0, int denominator = 1); int numerator() const; int denominator() const;..
C++ νλ‘κ·Έλλ¨Έμ νλ μμ΄μ λ°μ΄λΈμΈ, μ€μ½§ λ§μ΄μ΄μ€μ Modern Effective C++ λ₯Ό μ½κ³ κΈ°μ΅ν λ΄μ©μ μμ½νκ³ μμ΅λλ€. κΌ μ½μ΄λ³΄μκΈΈ μΆμ²λ립λλ€! νλͺ© 23 : λ©€λ² ν¨μ보λ€λ λΉλ©€λ² λΉνλ λ ν¨μμ λ κ°κΉμμ§μ ν΅μ¬ : λ©€λ² ν¨μ보λ€λ λΉλ©€λ² λΉνλ λ ν¨μλ₯Ό μμ£Ό μ°μ. μΊ‘μν μ λκ° λμμ§κ³ , ν¨ν€μ§ μ μ°μ±λ 컀μ§λ©°, κΈ°λ₯μ μΈ νμ₯μ±λ λμ΄λλ€. μΉ λΈλΌμ°μ μμ μΊμλ₯Ό λΉμ°λ ν¨μ, URL κΈ°λ‘μ μμ λ ν¨μ, μΏ ν€λ₯Ό μ κ±°νλ ν¨μκ° μλ€κ³ νμ. μΈ λμμ λμμ νλλ‘ λ§λλ ν¨μλ₯Ό μ μν λ, λ©€λ² ν¨μλ‘ λ§λλ κ²μ΄ μ’μκΉ, λΉλ©€λ² ν¨μλ‘ μ 곡νλ κ²μ΄ λ μ’μκΉ? class WebBrowser { public: void clearCache(); void clearHist..
C++ νλ‘κ·Έλλ¨Έμ νλ μμ΄μ λ°μ΄λΈμΈ, μ€μ½§ λ§μ΄μ΄μ€μ Modern Effective C++ λ₯Ό μ½κ³ κΈ°μ΅ν λ΄μ©μ μμ½νκ³ μμ΅λλ€. κΌ μ½μ΄λ³΄μκΈΈ μΆμ²λ립λλ€! νλͺ© 22 : λ°μ΄ν° λ©€λ²κ° μ μΈλ κ³³μ private μμμμ λͺ μ¬νμ ν΅μ¬ : 1. λ°μ΄ν° λ©€λ²λ private λ©€λ²λ‘ μ μΈνμ μ΄λ₯Ό ν΅ν΄ ν΄λμ€ μ μμλ λ¬Έλ²μ μΌλ‘ μΌκ΄μ± μλ λ°μ΄ν° μ κ·Ό ν΅λ‘λ₯Ό μ 곡ν μ μκ³ , νμμ λ°λΌμλ μΈλ°ν μ κ·Ό μ μ΄λ κ°λ₯νλ©°, ν΄λμ€μ λΆλ³μμ±μ κ°νν μ μμ λΏ μλλΌ, λ΄λΆ ꡬνμ μ΅ν΅μ±λ λ°νν μ μλ€. 2. protected λ public λ³΄λ€ λ λ§μ΄ '보νΈ' λ°κ³ μλ κ²μ΄ μ λλ‘ μλλ€. λ¨Όμ , λ°μ΄ν° λ©€λ²μ public λμ private μ μ¨μΌ νλ μ΄μ λ₯Ό μμ보μ. λ¬Έλ²μ μΌκ΄..
C++ νλ‘κ·Έλλ¨Έμ νλ μμ΄μ λ°μ΄λΈμΈ, μ€μ½§ λ§μ΄μ΄μ€μ Modern Effective C++ λ₯Ό μ½κ³ κΈ°μ΅ν λ΄μ©μ μμ½νκ³ μμ΅λλ€. κΌ μ½μ΄λ³΄μκΈΈ μΆμ²λ립λλ€! νλͺ© 21 : ν¨μμμ κ°μ²΄λ₯Ό λ°νν΄μΌ ν κ²½μ°μ μ°Έμ‘°μλ₯Ό λ°ννλ €κ³ λ€μ§ λ§μ ν΅μ¬ : 1. μ§μ μ€ν κ°μ²΄μ λν ν¬μΈν°λ μ°Έμ‘°μλ₯Ό λ°ννλ μΌ, νΉμ νμ ν λΉλ κ°μ²΄μ λν μ°Έμ‘°μλ₯Ό λ°ννλ μΌ, λλ μ§μ μ μ κ°μ²΄μ λν ν¬μΈν°λ μ°Έμ‘°μλ₯Ό λ°ννλ μΌμ κ·Έλ° κ°μ²΄κ° λ κ° μ΄μ νμν΄μ§ κ°λ₯μ±μ΄ μλ€λ©΄ μ λλ‘ νμ§ λ§μ(νλͺ© 4λ₯Ό 보면 λ¨μΌ μ€λ λ νκ²½μμμ μ μ ν μ½λ μμ λ₯Ό μ°Ύμ μ μλ€) μ 리μλ₯Ό νννλ ν΄λμ€μ κ³±μ operator λ₯Ό λ€μκ³Ό κ°μ΄ μ μνλ©΄, κ°κΈ° λ€λ₯Έ λ¬Έμ κ° λ°μνλ€! // 1. result κ°μ²΄λ₯Ό μμ±..
C++ νλ‘κ·Έλλ¨Έμ νλ μμ΄μ λ°μ΄λΈμΈ, μ€μ½§ λ§μ΄μ΄μ€μ Modern Effective C++ λ₯Ό μ½κ³ κΈ°μ΅ν λ΄μ©μ μμ½νκ³ μμ΅λλ€. κΌ μ½μ΄λ³΄μκΈΈ μΆμ²λ립λλ€! νλͺ© 20 : 'κ°μ μν μ λ¬' 보λ€λ 'μμκ°μ²΄ μ°Έμ‘°μμ μν μ λ¬' λ°©μμ ννλ νΈμ΄ λκ° λ«λ€ ν΅μ¬ : 1. 'κ°μ μν μ λ¬' 보λ€λ 'μμ κ°μ²΄ μ°Έμ‘°μμ μν μ λ¬' μ μ νΈνμ. λ체μ μΌλ‘ ν¨μ¨μ μΌ λΏλ§ μλλΌ λ³΅μ¬μμ€ λ¬Έμ κΉμ§ λ§μμ€λ€. 2. μ΄λ² νλͺ©μμ λ€λ£¬ λ²μΉμ κΈ°λ³Έμ 곡 νμ λ° STL λ°λ³΅μ, κ·Έλ¦¬κ³ ν¨μ κ°μ²΄ νμ μλ λ§μ§ μλλ€. μ΄λ€μ λν΄μλ 'κ°μ μν μ λ¬' μ΄ λ μ μ νλ€. κΈ°λ³Έμ μΌλ‘ C++ λ ν¨μλ‘λΆν° κ°μ²΄λ₯Ό μ λ¬λ°κ±°λ μ λ¬ν λ 'κ°μ μν μ λ¬(pass-by-value)' λ°©μμ μ¬μ©νλ€. μ΄λ¬ν..
C++ νλ‘κ·Έλλ¨Έμ νλ μμ΄μ λ°μ΄λΈμΈ, μ€μ½§ λ§μ΄μ΄μ€μ Modern Effective C++ λ₯Ό μ½κ³ κΈ°μ΅ν λ΄μ©μ μμ½νκ³ μμ΅λλ€. κΌ μ½μ΄λ³΄μκΈΈ μΆμ²λ립λλ€! νλͺ© 19 : ν΄λμ€ μ€κ³λ νμ μ€κ³μ λκ°μ΄ μ·¨κΈνμ ν΅μ¬ : ν΄λμ€ μ€κ³λ νμ μ€κ³μ΄λ€. μλ‘μ΄ νμ μ μ μνκΈ° μ μ, μ΄λ² νλͺ©μ λμ¨ λͺ¨λ κ³ λ €μ¬νμ λΉ μ§μμ΄ μ κ²ν΄ 보μ! C++ μμ μλ‘μ΄ ν΄λμ€λ₯Ό μ μνλ€λ κ²μ μλ‘μ΄ νμ μ νλ μ μνλ κ²κ³Ό κ°λ€. λ°λΌμ λ€μκ³Ό κ°μ μμλ€μ μκ³ ν ν λ§λ€μ΄ 보μ! μλ‘ μ μν νμ μ κ°μ²΄ μμ± λ° μλ©Έμ μ΄λ»κ² μ΄λ£¨μ΄μ ΈμΌ νλκ°? (operator new, operator delete[] λ±λ±) κ°μ²΄ μ΄κΈ°νλ κ°μ²΄ λμ κ³Ό μ΄λ»κ² λ¬λΌμΌ νλκ°? μλ‘μ΄ νμ μΌλ‘ λ§λ κ°μ²΄κ° κ°μ μν΄..
C++ νλ‘κ·Έλλ¨Έμ νλ μμ΄μ λ°μ΄λΈμΈ, μ€μ½§ λ§μ΄μ΄μ€μ Modern Effective C++ λ₯Ό μ½κ³ κΈ°μ΅ν λ΄μ©μ μμ½νκ³ μμ΅λλ€. κΌ μ½μ΄λ³΄μκΈΈ μΆμ²λ립λλ€! νλͺ© 18 : μΈν°νμ΄μ€ μ€κ³λ μ λλ‘ μ°κΈ°μ μ½κ², μν°λ¦¬λ‘ μ°κΈ°μ μ΄λ ΅κ² νμ ν΅μ¬ : 1. μ’μ μΈν°νμ΄μ€λ μ λλ‘ μ°κΈ°μ μ¬μ°λ©° μν°λ¦¬λ‘ μ°κΈ°μ μ΄λ ΅λ€. μΈν°νμ΄μ€λ₯Ό λ§λ€ λλ μ΄ νΉμ±μ μ§λ μ μλλ‘ κ³ λ―Όνκ³ λ κ³ λ―Όνμ 2. μΈν°νμ΄μ€μ μ¬λ°λ₯Έ μ¬μ©μ μ΄λλ λ°©λ²μΌλ‘λ μΈν°νμ΄μ€ μ¬μ΄μ μΌκ΄μ± μ‘μμ£ΌκΈ°, κ·Έλ¦¬κ³ κΈ°λ³Έμ 곡 νμ κ³Όμ λμ νΈνμ± μ μ§νκΈ°κ° μλ€. 3. μ¬μ©μμ μ€μλ₯Ό λ°©μ§νλ λ°©λ²μΌλ‘λ μλ‘μ΄ νμ λ§λ€κΈ°, νμ μ λν μ°μ°μ μ ννκΈ°, κ°μ²΄μ κ°μ λν΄ μ μ½ κ±ΈκΈ°, μμ κ΄λ¦¬ μμ μ μ¬μ©μ μ± μμΌλ‘ λμ§ μκΈ°κ° μ..
C++ νλ‘κ·Έλλ¨Έμ νλ μμ΄μ λ°μ΄λΈμΈ, μ€μ½§ λ§μ΄μ΄μ€μ Modern Effective C++ λ₯Ό μ½κ³ κΈ°μ΅ν λ΄μ©μ μμ½νκ³ μμ΅λλ€. κΌ μ½μ΄λ³΄μκΈΈ μΆμ²λ립λλ€! νλͺ© 17 : new λ‘ μμ±ν κ°μ²΄λ₯Ό μ€λ§νΈ ν¬μΈν°μ μ μ₯νλ μ½λλ λ³λμ ν λ¬Έμ₯μΌλ‘ λ§λ€μ ν΅μ¬ : new λ‘ μμν κ°μ²΄λ₯Ό μ€λ§νΈ ν¬μΈν°λ‘ λ£λ μ½λλ λ³λμ ν λ¬Έμ₯μΌλ‘ λ§λ€μ. μ΄κ²μ΄ μ λμ΄ μμΌλ©΄, μμΈκ° λ°μλ λ λλ²κΉ νκΈ° νλ μμ λμΆμ΄ μ΄λλ μ μλ€! μ²λ¦¬ μ°μ μμλ₯Ό μλ €μ£Όλ ν¨μκ° νλ μκ³ , λμ μΌλ‘ ν λΉν Widget κ°μ²΄μ λν΄ μ΄λ€ μ°μ μμμ λ°λΌ μ²λ¦¬λ₯Ό μ μ©νλ ν¨μκ° νλ μλ€κ³ κ°μ νμ. int priority(); void processWidget(std::shared_ptr pw, int prio..
C++ νλ‘κ·Έλλ¨Έμ νλ μμ΄μ λ°μ΄λΈμΈ, μ€μ½§ λ§μ΄μ΄μ€μ Modern Effective C++ λ₯Ό μ½κ³ κΈ°μ΅ν λ΄μ©μ μμ½νκ³ μμ΅λλ€. κΌ μ½μ΄λ³΄μκΈΈ μΆμ²λ립λλ€! νλͺ© 16 : new λ° delete λ₯Ό μ¬μ©ν λλ ννλ₯Ό λ°λμ λ§μΆμ ν΅μ¬ : new ννμμ [ ] λ₯Ό μΌμΌλ©΄, λμλλ delete ννμμλ [ ] λ₯Ό μ¨μΌ νλ€. λ§μ°¬κ°μ§λ‘, new ννμμ [ ] λ₯Ό μ μΌμΌλ©΄, λμλλ delete ννμμλ [ ] λ₯Ό μ°μ§ λ§μμΌ νλ€. μλ μ½λλ μ΄λ€ λΆλΆμ΄ μλͺ»λμμκΉ? std::string *stringArray = new std::string[100]; ... delete stringArray; stringArray λ λ°°μ΄μ΄λ―λ‘, delete[] λ₯Ό μ¬μ©νμ§ μμΌλ©΄ λ°°μ΄μ κ°μ²΄ ..