λͺ©λ‘μ 체 κΈ (1103)
KoreanFoodie's Study
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/ev7E12/btrPyAjSjnf/TmJtGDVxGcXqq8zUFspyg0/img.jpg)
C++ νλ‘κ·Έλλ¨Έμ νλ μμ΄μ λ°μ΄λΈμΈ, μ€μ½§ λ§μ΄μ΄μ€μ Modern Effective C++ λ₯Ό μ½κ³ κΈ°μ΅ν λ΄μ©μ μμ½νκ³ μμ΅λλ€. κΌ μ½μ΄λ³΄μκΈΈ μΆμ²λ립λλ€! νλͺ© 47 : νμ μ λν μ λ³΄κ° νμνλ€λ©΄ νΉμ±μ 보 ν΄λμ€λ₯Ό μ¬μ©νμ ν΅μ¬ : 1. νΉμ±μ 보 ν΄λμ€λ μ»΄νμΌ λμ€μ μ¬μ©ν μ μλ νμ κ΄λ ¨ μ 보λ₯Ό λ§λ€μ΄λΈλ€. λν νΉμ±μ 보 ν΄λμ€λ ν νλ¦Ώ λ° ν νλ¦Ώ νΉμ λ²μ μ μ¬μ©νμ¬ κ΅¬ννλ€. 2. ν¨μ μ€λ²λ‘λ© κΈ°λ²κ³Ό κ²°ν©νμ¬ νΉμ±μ 보 ν΄λμ€λ₯Ό μ¬μ©νλ©΄, μ»΄νμΌ νμμ κ²°μ λλ νμ λ³ if...else μ κ²λ¬Έμ ꡬμ¬ν μ μλ€. STL μλ container, iterator, algorithm λ§κ³ λ utility λΌκ³ λΆλ¦¬λ ν νλ¦Ώλ λͺ κ° λ€μ΄ μλ€. μ΄λ€ μ€ advance λΌλ, μ§μ λ ..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/bhAKO7/btrPymGc1IH/R05vTmtbCJLJxyT0Xms5Pk/img.jpg)
C++ νλ‘κ·Έλλ¨Έμ νλ μμ΄μ λ°μ΄λΈμΈ, μ€μ½§ λ§μ΄μ΄μ€μ Modern Effective C++ λ₯Ό μ½κ³ κΈ°μ΅ν λ΄μ©μ μμ½νκ³ μμ΅λλ€. κΌ μ½μ΄λ³΄μκΈΈ μΆμ²λ립λλ€! νλͺ© 46 : νμ λ³νμ΄ λ°λμ§ν κ²½μ°μλ λΉλ©€λ² ν¨μλ₯Ό ν΄λμ€ ν νλ¦Ώ μμ μ μν΄ λμ ν΅μ¬ : λͺ¨λ 맀κ°λ³μμ λν΄ μμμ νμ λ³νμ μ§μνλ ν νλ¦Ώκ³Ό κ΄κ³κ° μλ ν¨μλ₯Ό μ 곡νλ ν΄λμ€ ν νλ¦Ώμ λ§λ€λ €κ³ νλ€λ©΄, μ΄λ° ν¨μλ ν΄λμ€ ν νλ¦Ώ μμ νλ λ ν¨μλ‘μ μ μνλ€ λ€μκ³Ό κ°μ μ 리μ κ³μ° ν΄λμ€κ° μλ€κ³ ν΄ λ³΄μ. template class Rational { public: Rational(const T& numerator = 0, const T& denominator = 1); const T numerator() const;..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/T5AOO/btrPt6SefHU/R9kI4dp0VqpWd7RMQTAjTK/img.jpg)
C++ νλ‘κ·Έλλ¨Έμ νλ μμ΄μ λ°μ΄λΈμΈ, μ€μ½§ λ§μ΄μ΄μ€μ Modern Effective C++ λ₯Ό μ½κ³ κΈ°μ΅ν λ΄μ©μ μμ½νκ³ μμ΅λλ€. κΌ μ½μ΄λ³΄μκΈΈ μΆμ²λ립λλ€! νλͺ© 45 : "νΈνλλ λͺ¨λ νμ "μ λ°μλ€μ΄λ λ°λ λ©€λ² ν¨μ ν νλ¦Ώμ΄ μ§λ°©! ν΅μ¬ : 1. νΈνλλ λͺ¨λ νμ μ λ°μλ€μ΄λ λ©€λ² ν¨μλ₯Ό λ§λ€λ €λ©΄ λ©€λ² ν¨μ ν νλ¦Ώμ μ¬μ©νλ€. 2. μΌλ°νλ λ³΅μ¬ μμ± μ°μ°κ³Ό μΌλ°νλ λμ μ°μ°μ μν΄ λ©€λ² ν νλ¦Ώμ μ μΈνλ€ νλλΌλ, 보ν΅μ λ³΅μ¬ μμ±μμ λ³΅μ¬ λμ μ°μ°μλ μ¬μ ν μ§μ μ μΈν΄μΌ νλ€. ν¬μΈν°λ λ€μκ³Ό κ°μ μμμ λ³νμ μ§μνλ€. class Base {}; class Derived: public Base {}; Base *pt1 = new Derived; νμ§λ§ ν νλ¦Ώμ μ΄μ©ν΄μ λ§λ..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/ccYfj8/btrPyVBbo1K/UdglPsVfiTOAHKDK4ejftk/img.jpg)
C++ νλ‘κ·Έλλ¨Έμ νλ μμ΄μ λ°μ΄λΈμΈ, μ€μ½§ λ§μ΄μ΄μ€μ Modern Effective C++ λ₯Ό μ½κ³ κΈ°μ΅ν λ΄μ©μ μμ½νκ³ μμ΅λλ€. κΌ μ½μ΄λ³΄μκΈΈ μΆμ²λ립λλ€! νλͺ© 44 : 맀κ°λ³μμ λ 립μ μΈ μ½λλ ν νλ¦ΏμΌλ‘λΆν° λΆλ¦¬μν€μ ν΅μ¬ : 1. ν νλ¦Ώμ μ¬μ©νλ©΄ λΉμ·λΉμ·ν ν΄λμ€μ ν¨μκ° μ¬λ¬ λ² λ§λ€μ΄μ§λ€. λ°λΌμ ν νλ¦Ώ 맀κ°λ³μμ μ’ μλμ§ μμ ν νλ¦Ώ μ½λλ λΉλνμ μμΈμ΄ λλ€. 2. λΉνμ ν νλ¦Ώ 맀κ°λ³μλ‘ μκΈ°λ μ½λ λΉλνμ κ²½μ°, ν νλ¦Ώ 맀κ°λ³μλ₯Ό ν¨μ 맀κ°λ³μ νΉμ ν΄λμ€ λ°μ΄ν° λ©€λ²λ‘ λ체ν¨μΌλ‘μ¨ λΉλν μ’ μ’ μμ¨ μ μλ€. 3. νμ 맀κ°λ³μλ‘ μκΈ°λ μ½λ λΉλνμ κ²½μ°, λμΌν μ΄μ§ ννꡬ쑰λ₯Ό κ°μ§κ³ μΈμ€ν΄μ€νλλ νμ λ€μ΄ ν κ°μ§ ν¨μ ꡬνμ 곡μ νκ² λ§λ¦μΌλ‘μ¨ λΉλνλ₯Ό κ°μμν¬ ..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/IpY2m/btrPw0jkqoR/4kvrjo2ahHnXMGDMJRuP0k/img.jpg)
C++ νλ‘κ·Έλλ¨Έμ νλ μμ΄μ λ°μ΄λΈμΈ, μ€μ½§ λ§μ΄μ΄μ€μ Modern Effective C++ λ₯Ό μ½κ³ κΈ°μ΅ν λ΄μ©μ μμ½νκ³ μμ΅λλ€. κΌ μ½μ΄λ³΄μκΈΈ μΆμ²λ립λλ€! νλͺ© 43 : ν νλ¦ΏμΌλ‘ λ§λ€μ΄μ§ κΈ°λ³Έ ν΄λμ€ μμ μ΄λ¦μ μ κ·Όνλ λ°©λ²μ μμ λμ ν΅μ¬ : νμ ν΄λμ€ ν νλ¦Ώμμ κΈ°λ³Έ ν΄λμ€ ν νλ¦Ώμ μ΄λ¦μ μ°Έμ‘°ν λλ, "this->" λ₯Ό μ λμ¬λ‘ λΆμ΄κ±°λ κΈ°λ³Έ ν΄λμ€ νμ λ¬Έμ λͺ μμ μΌλ‘ μ¨ μ£Όλ κ²μΌλ‘ ν΄κ²°νμ ν νλ¦Ώ ν΄λμ€ μμνλ λ€μ μμ μ½λλ₯Ό 보μ. class CompanyA { public: void sendCleartext(const std::string& msg); void sendEncrypted(const std::string& msg); }; // CompanyB, Compan..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/66xSj/btrPyGdcqqb/0UJnxxDjQI6DFKtld1Q2bK/img.jpg)
C++ νλ‘κ·Έλλ¨Έμ νλ μμ΄μ λ°μ΄λΈμΈ, μ€μ½§ λ§μ΄μ΄μ€μ Modern Effective C++ λ₯Ό μ½κ³ κΈ°μ΅ν λ΄μ©μ μμ½νκ³ μμ΅λλ€. κΌ μ½μ΄λ³΄μκΈΈ μΆμ²λ립λλ€! νλͺ© 42 : typename μ λ κ°μ§ μλ―Έλ₯Ό μ λλ‘ νμ νμ ν΅μ¬ : 1. ν νλ¦Ώ 맀κ°λ³μλ₯Ό μ μΈν λ, class λ° typename μ μλ‘ λ°κΎΈμ΄ μ¨λ 무방νλ€. 2. μ€μ²© μμ‘΄ νμ μ΄λ¦μ μλ³νλ μ©λμλ λ°λμ typename μ μ¬μ©νλ€. λ¨, μ€μ²© μμ‘΄ μ΄λ¦μ΄ κΈ°λ³Έ ν΄λμ€ λ¦¬μ€νΈμ μκ±°λ λ©€λ² μ΄κΈ°ν 리μ€νΈ λ΄μ κΈ°λ³Έ ν΄λμ€ μλ³μλ‘ μλ κ²½μ°μλ μμΈμ΄λ€. μ§λ¬Έ : μλμ λ ν νλ¦Ώ μ μΈλ¬Έμ μ°μΈ class μ typename μ μ°¨μ΄λ 무μμΌκΉ? template class Widget; template class Wi..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/UnAUz/btrPwAkKCnV/V5fFS9XaAoWOC5YTNkdw71/img.jpg)
C++ νλ‘κ·Έλλ¨Έμ νλ μμ΄μ λ°μ΄λΈμΈ, μ€μ½§ λ§μ΄μ΄μ€μ Modern Effective C++ λ₯Ό μ½κ³ κΈ°μ΅ν λ΄μ©μ μμ½νκ³ μμ΅λλ€. κΌ μ½μ΄λ³΄μκΈΈ μΆμ²λ립λλ€! νλͺ© 41 : ν νλ¦Ώ νλ‘κ·Έλλ°μ μ²λ¦ΏκΈΈλ μμμ μΈν°νμ΄μ€μ μ»΄νμΌ νμ λ€νμ±λΆν° ν΅μ¬ : 1. ν΄λμ€ λ° ν νλ¦Ώμ λͺ¨λ μΈν°νμ΄μ€μ λ€νμ±μ μ§μνλ€. 2. ν΄λμ€μ κ²½μ°, μΈν°νμ΄μ€λ λͺ μμ μ΄λ©° ν¨μμ μκ·Έλμ²λ₯Ό μ€μ¬μΌλ‘ ꡬμ±λμ΄μλ€. λ€νμ±μ νλ‘κ·Έλ¨ μ€ν μ€μ κ°μ ν¨μλ₯Ό ν΅ν΄ λνλλ€. 3. ν νλ¦Ώ 맀κ°λ³μμ κ²½μ°, μΈν°νμ΄μ€λ μμμ μ΄λ©° μ ν¨ ννμμ κΈ°λ°μ λμ΄ κ΅¬μ±λλ€. λ€νμ±μ μ»΄νμΌ μ€μ ν νλ¦Ώ μΈμ€ν΄μ€νμ ν¨μ μ€λ²λ‘λ© λͺ¨νΈμ± ν΄κ²°μ ν΅ν΄ λνλλ€. κ°μ²΄ μ§ν₯ νλ‘κ·Έλλ°μ μΈκ³λ₯Ό νμ μν€λ μΆμ λͺ μμ μΈν°νμ΄μ€(ex..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/eByBwL/btrPyc4IYXF/Eg30T2nugb6fgj5mJbIuyK/img.jpg)
C++ νλ‘κ·Έλλ¨Έμ νλ μμ΄μ λ°μ΄λΈμΈ, μ€μ½§ λ§μ΄μ΄μ€μ Modern Effective C++ λ₯Ό μ½κ³ κΈ°μ΅ν λ΄μ©μ μμ½νκ³ μμ΅λλ€. κΌ μ½μ΄λ³΄μκΈΈ μΆμ²λ립λλ€! νλͺ© 40 : λ€μ€ μμμ μ¬μ¬μκ³ ν΄μ μ¬μ©νμ ν΅μ¬ : 1. λ€μ€ μμμ λ¨μΌ μμλ³΄λ€ λ³΅μ‘νλ€. μλ‘μ΄ λͺ¨νΈμ± λ¬Έμ λ₯Ό μΌμΌν¬ λΏ μλλΌ κ°μ μμμ΄ νμν΄μ§ μλ μλ€. 2. κ°μ μμμ μ°λ©΄ ν¬κΈ° λΉμ©, μλ λΉμ©μ΄ λμ΄λλ©° μ΄κΈ°ν λ° λμ μ°μ°μ 볡μ‘λκ° μ»€μ§λ€. λ°λΌμ κ°μ κΈ°λ³Έ ν΄λμ€μλ λ°μ΄ν°λ₯Ό λμ§ μλ κ²μ΄ νμ€μ μΌλ‘ κ°μ₯ μ€μ©μ μ΄λ€. 3. λ€μ€ μμμ μ λ²νκ² μΈ μ μλ κ²½μ°κ° μλ€. μ¬λ¬ μλλ¦¬μ€ μ€ νλλ, μΈν°νμ΄μ€ ν΄λμ€λ‘λΆν° public μμμ μν΄κ³Ό λμμ ꡬνμ λλ ν΄λμ€λ‘λΆν° private μμμ μν€λ ..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/xUuHw/btrPt56PVQk/SRkiGe3GYyKcSvy5Ja67zK/img.jpg)
C++ νλ‘κ·Έλλ¨Έμ νλ μμ΄μ λ°μ΄λΈμΈ, μ€μ½§ λ§μ΄μ΄μ€μ Modern Effective C++ λ₯Ό μ½κ³ κΈ°μ΅ν λ΄μ©μ μμ½νκ³ μμ΅λλ€. κΌ μ½μ΄λ³΄μκΈΈ μΆμ²λ립λλ€! νλͺ© 39 : private μμμ μ¬μ¬μκ³ ν΄μ ꡬμ¬νμ ν΅μ¬ : 1. private μμμ μλ―Έλ is-implmented-in-terms-of(...λ ...λ₯Ό μ¨μ ꡬνλ¨) μ΄λ€. λκ° κ°μ²΄ ν©μ±κ³Ό λΉκ΅ν΄μ μ°μ΄λ λΆμΌκ° λ§μ§λ μμ§λ§, νμ ν΄λμ€ μͺ½μμ κΈ°λ³Έ ν΄λμ€μ protected λ©€λ²μ μ κ·Όν΄μΌ ν κ²½μ° νΉμ μμλ°μ κ°μ ν¨μλ₯Ό μ¬μ μν΄μΌ ν κ²½μ°μλ private μμμ΄ λλ¦λλ‘ μλ―Έκ° μλ€. 2. κ°μ²΄ ν©μ±κ³Ό λ¬λ¦¬, private μμμ 곡백 κΈ°λ³Έ ν΄λμ€ μ΅μ ν(EBO) λ₯Ό νμ±νμν¬μ μλ€. μ΄λ κ°μ²΄ ν¬κΈ°λ₯Ό κ°μ§κ³ κ³ ..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/uZ3rt/btrPyc4ISBB/HyEAxkq6n7FkunE5IgIPn0/img.jpg)
C++ νλ‘κ·Έλλ¨Έμ νλ μμ΄μ λ°μ΄λΈμΈ, μ€μ½§ λ§μ΄μ΄μ€μ Modern Effective C++ λ₯Ό μ½κ³ κΈ°μ΅ν λ΄μ©μ μμ½νκ³ μμ΅λλ€. κΌ μ½μ΄λ³΄μκΈΈ μΆμ²λ립λλ€! νλͺ© 38 : "has-a(...λ...λ₯Ό κ°μ§)" νΉμ "is-implemented-in-terms-of(...λ...λ₯Ό μ¨μ ꡬνλ¨)"λ₯Ό λͺ¨ννν λλ κ°μ²΄ ν©μ±μ μ¬μ©νμ ν΅μ¬ : 1. κ°μ²΄ ν¨μ±(composition)μ μλ―Έλ public μμμ΄ κ°μ§ μλ―Έμ μμ ν λ€λ₯΄λ€. 2. μμ© μμμμ κ°μ²΄ ν©μ±μ μλ―Έλ has-a(...λ...λ₯Ό κ°μ§)μ΄λ€. ꡬν μμμμλ is-implemented-in-terms-of(...λ ...λ₯Ό μ¨μ ꡬνλ¨)μ μλ―Έλ₯Ό κ°λλ€. ν©μ±(composition) μ΄λ, μ΄λ€ νμ μ κ°μ²΄λ€μ΄ κ·Έμ λ€λ₯Έ ν..