Notice
Recent Posts
Recent Comments
Link
관리 메뉴

λͺ©λ‘μ „체 κΈ€ (1110)

KoreanFoodie's Study

Effective Modern C++ | ν•­λͺ© 18 : μ†Œμœ κΆŒ 독점 μžμ›μ˜ κ΄€λ¦¬μ—λŠ” std::unique_ptr λ₯Ό μ‚¬μš©ν•˜λΌ

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..

Tutorials/C++ : Advanced 2022. 10. 26. 09:56
Effective Modern C++ | ν•­λͺ© 17 : 특수 멀버 ν•¨μˆ˜λ“€μ˜ μžλ™ μž‘μ„± 쑰건을 μˆ™μ§€ν•˜λΌ

C++ ν”„λ‘œκ·Έλž˜λ¨Έμ˜ ν•„λ…μ„œμ΄μž 바이블인, 슀콧 λ§ˆμ΄μ–΄μŠ€μ˜ Modern Effective C++ λ₯Ό 읽고 κΈ°μ–΅ν•  λ‚΄μš©μ„ μš”μ•½ν•˜κ³  μžˆμŠ΅λ‹ˆλ‹€. κΌ­ μ½μ–΄λ³΄μ‹œκΈΈ μΆ”μ²œλ“œλ¦½λ‹ˆλ‹€! ν•­λͺ© 17 : 특수 멀버 ν•¨μˆ˜λ“€μ˜ μžλ™ μž‘μ„± 쑰건을 μˆ™μ§€ν•˜λΌ 핡심 : 1. μ»΄νŒŒμΌλŸ¬κ°€ 슀슀둜 μž‘μ„±ν•  수 μžˆλŠ” 멀버 ν•¨μˆ˜λ“€, 즉 κΈ°λ³Έ μƒμ„±μžμ™€ μ†Œλ©Έμž, 볡사 μ—°μ‚°λ“€, 이동 연산듀을 κ°€λ¦¬μΌœ 특수 멀버 ν•¨μˆ˜λΌκ³  ν•œλ‹€. 2. 이동 연산듀은 이동 μ—°μ‚°λ“€μ΄λ‚˜ 볡사 μ—°μ‚°λ“€, μ†Œλ©Έμžκ°€ λͺ…μ‹œμ μœΌλ‘œ μ„ μ–Έλ˜μ–΄ μžˆμ§€ μ•Šμ€ ν΄λž˜μŠ€μ— λŒ€ν•΄μ„œλ§Œ μžλ™μœΌλ‘œ μž‘μ„±λœλ‹€. 3. 볡사 μƒμ„±μžλŠ” 볡사 μƒμ„±μžκ°€ λͺ…μ‹œμ μœΌλ‘œ μ„ μ–Έλ˜μ–΄ μžˆμ§€ μ•Šμ€ ν΄λž˜μŠ€μ— λŒ€ν•΄μ„œλ§Œ μžλ™μœΌλ‘œ μž‘μ„±λ˜λ©°, 만일 이동 연산이 ν•˜λ‚˜λΌλ„ μ„ μ–Έλ˜μ–΄ 있으면 μ‚­μ œλœλ‹€. 볡사 λ°°μ • μ—°μ‚°μžλŠ” 볡사 λ°°μ • μ—°μ‚°μžκ°€ λͺ…μ‹œμ μœΌλ‘œ ..

Tutorials/C++ : Advanced 2022. 10. 26. 09:55
Effective Modern C++ | ν•­λͺ© 16 : const 멀버 ν•¨μˆ˜λ₯Ό μŠ€λ ˆλ“œμ— μ•ˆμ „ν•˜κ²Œ μž‘μ„±ν•˜λΌ

C++ ν”„λ‘œκ·Έλž˜λ¨Έμ˜ ν•„λ…μ„œμ΄μž 바이블인, 슀콧 λ§ˆμ΄μ–΄μŠ€μ˜ Modern Effective C++ λ₯Ό 읽고 κΈ°μ–΅ν•  λ‚΄μš©μ„ μš”μ•½ν•˜κ³  μžˆμŠ΅λ‹ˆλ‹€. κΌ­ μ½μ–΄λ³΄μ‹œκΈΈ μΆ”μ²œλ“œλ¦½λ‹ˆλ‹€! ν•­λͺ© 16 : const 멀버 ν•¨μˆ˜λ₯Ό μŠ€λ ˆλ“œμ— μ•ˆμ „ν•˜κ²Œ μž‘μ„±ν•˜λΌ 핡심 : 1. λ™μ‹œμ  λ¬Έλ§₯μ—μ„œ 쓰이지 μ•Šμ„ 것이 ν™•μ‹€ν•œ κ²½μš°κ°€ μ•„λ‹ˆλΌλ©΄, const 멀버 ν•¨μˆ˜λŠ” μŠ€λ ˆλ“œμ— μ•ˆμ „ν•˜κ²Œ μž‘μ„±ν•˜λΌ. 2. std::atomic λ³€μˆ˜λŠ” mutex 에 λΉ„ν•΄ μ„±λŠ₯μƒμ˜ 이점이 μžˆμ§€λ§Œ, ν•˜λ‚˜μ˜ λ³€μˆ˜ λ˜λŠ” λ©”λͺ¨λ¦¬ μž₯μ†Œλ₯Ό λ‹€λ£° λ•Œμ—λ§Œ μ ν•©ν•˜λ‹€. λ‹€μŒκ³Ό 같은 닀항식 ν΄λž˜μŠ€κ°€ μžˆλ‹€κ³  ν•˜μž. class Polynomial { public: using RootsType = std::vector; RootsType roots() const { // μΊμ‹œκ°€ μœ νš¨ν•˜μ§€ μ•ŠμœΌλ©΄ ..

Tutorials/C++ : Advanced 2022. 10. 26. 09:54
Effective Modern C++ | ν•­λͺ© 15 : κ°€λŠ₯ν•˜λ©΄ 항상 constexpr λ₯Ό μ‚¬μš©ν•˜λΌ

C++ ν”„λ‘œκ·Έλž˜λ¨Έμ˜ ν•„λ…μ„œμ΄μž 바이블인, 슀콧 λ§ˆμ΄μ–΄μŠ€μ˜ Modern Effective C++ λ₯Ό 읽고 κΈ°μ–΅ν•  λ‚΄μš©μ„ μš”μ•½ν•˜κ³  μžˆμŠ΅λ‹ˆλ‹€. κΌ­ μ½μ–΄λ³΄μ‹œκΈΈ μΆ”μ²œλ“œλ¦½λ‹ˆλ‹€! ν•­λͺ© 15 : κ°€λŠ₯ν•˜λ©΄ 항상 constexpr λ₯Ό μ‚¬μš©ν•˜λΌ 핡심 : 1. constexpr κ°μ²΄λŠ” const 이며, 컴파일 도쀑에 μ•Œλ €μ§€λŠ” κ°’λ“€λ‘œ μ΄ˆκΈ°ν™”λœλ‹€. 2. constexpr ν•¨μˆ˜λŠ” κ·Έ 값이 컴파일 도쀑에 μ•Œλ €μ§€λŠ” μΈμˆ˜λ“€λ‘œ ν˜ΈμΆœν•˜λŠ” κ²½μš°μ—λŠ” 컴파일 μ‹œμ  κ²°κ³Όλ₯Ό μ‚°μΆœν•œλ‹€. 3. constexpr κ°μ²΄λ‚˜ ν•¨μˆ˜λŠ” λΉ„constexpr κ°μ²΄λ‚˜ ν•¨μˆ˜λ³΄λ‹€ κ΄‘λ²”μœ„ν•œ λ¬Έλ§₯μ—μ„œ μ‚¬μš©ν•  수 μžˆλ‹€. 4. constexpr 은 κ°μ²΄λ‚˜ ν•¨μˆ˜μ˜ μΈν„°νŽ˜μ΄μŠ€μ˜ 일뢀이닀. κ°œλ…μ μœΌλ‘œ, constexpr λŠ” μ–΄λ– ν•œ 값이 단지 μƒμˆ˜μΌ 뿐만 μ•„λ‹ˆλΌ 컴파일 μ‹œμ μ—μ„œ μ•Œλ €μ§„..

Tutorials/C++ : Advanced 2022. 10. 26. 09:54
Effective Modern C++ | ν•­λͺ© 14 : μ˜ˆμ™Έλ₯Ό λ°©μΆœν•˜μ§€ μ•Šμ„ ν•¨μˆ˜λŠ” noexcept 둜 μ„ μ–Έν•˜λΌ

C++ ν”„λ‘œκ·Έλž˜λ¨Έμ˜ ν•„λ…μ„œμ΄μž 바이블인, 슀콧 λ§ˆμ΄μ–΄μŠ€μ˜ Modern Effective C++ λ₯Ό 읽고 κΈ°μ–΅ν•  λ‚΄μš©μ„ μš”μ•½ν•˜κ³  μžˆμŠ΅λ‹ˆλ‹€. κΌ­ μ½μ–΄λ³΄μ‹œκΈΈ μΆ”μ²œλ“œλ¦½λ‹ˆλ‹€! ν•­λͺ© 14 : μ˜ˆμ™Έλ₯Ό λ°©μΆœν•˜μ§€ μ•Šμ„ ν•¨μˆ˜λŠ” noexcept 둜 μ„ μ–Έν•˜λΌ 핡심 : 1. noexcept λŠ” ν•¨μˆ˜μ˜ μΈν„°νŽ˜μ΄μŠ€μ˜ 일뢀이닀. μ΄λŠ” ν˜ΈμΆœμžκ°€ noexcept 여뢀에 μ˜μ‘΄ν•  수 μžˆμŒμ„ λœ»ν•œλ‹€. 2. noexcept ν•¨μˆ˜λŠ” λΉ„ noexcept ν•¨μˆ˜λ³΄λ‹€ μ΅œμ ν™”μ˜ μ—¬μ§€κ°€ 크닀. 3. noexcept λŠ” 이동 μ—°μ‚°λ“€κ³Ό swap, λ©”λͺ¨λ¦¬ ν•΄μ œ ν•¨μˆ˜λ“€, 그리고 μ†Œλ©Έμžλ“€μ— νŠΉνžˆλ‚˜ μœ μš©ν•˜λ‹€. 4. λŒ€λΆ€λΆ„μ˜ ν•¨μˆ˜λŠ” noexcept κ°€ μ•„λ‹ˆλΌ μ˜ˆμ™Έμ— 쀑립적이닀. ν•¨μˆ˜λ₯Ό noexcept 둜 μ„ μ–Έν•  κ²ƒμΈμ§€μ˜ μ—¬λΆ€λŠ” μΈν„°νŽ˜μ΄μŠ€ μ„€κ³„μƒμ˜ 문제인데, μ΄λŠ” 클라..

Tutorials/C++ : Advanced 2022. 10. 26. 09:54
Effective Modern C++ | ν•­λͺ© 12 : μž¬μ •μ˜ ν•¨μˆ˜λ“€μ„ override 둜 μ„ μ–Έν•˜λΌ

C++ ν”„λ‘œκ·Έλž˜λ¨Έμ˜ ν•„λ…μ„œμ΄μž 바이블인, 슀콧 λ§ˆμ΄μ–΄μŠ€μ˜ Modern Effective C++ λ₯Ό 읽고 κΈ°μ–΅ν•  λ‚΄μš©μ„ μš”μ•½ν•˜κ³  μžˆμŠ΅λ‹ˆλ‹€. κΌ­ μ½μ–΄λ³΄μ‹œκΈΈ μΆ”μ²œλ“œλ¦½λ‹ˆλ‹€! ν•­λͺ© 12 : μž¬μ •μ˜ ν•¨μˆ˜λ“€μ„ override 둜 μ„ μ–Έν•˜λΌ 핡심 : 1. μž¬μ •μ˜ ν•¨μˆ˜λŠ” override 둜 μ„ μ–Έν•˜λΌ. 2. 멀버 ν•¨μˆ˜ μ°Έμ‘° ν•œμ •μ‚¬(reference qualifier)λ₯Ό μ΄μš©ν•˜λ©΄ 멀버 ν•¨μˆ˜κ°€ ν˜ΈμΆœλ˜λŠ” 객체(*this)의 μ™Όκ°’ 버전과 였λ₯Έκ°’ 버전을 λ‹€λ₯Έ λ°©μ‹μœΌλ‘œ μ²˜λ¦¬ν•  수 μžˆλ‹€. 기반 ν΄λž˜μŠ€μ—μ„œ μ •μ˜λœ 가상 ν•¨μˆ˜κ°€ νŒŒμƒ ν΄λž˜μŠ€μ—μ„œ μž¬μ •μ˜λ˜κΈ° μœ„ν•΄μ„œλŠ” λ‹€μŒκ³Ό 같은 쑰건듀이 만쑱 λ˜μ–΄μ•Ό ν•œλ‹€. 기반 클래슀 ν•¨μˆ˜κ°€ κ°€μƒν•¨μˆ˜ 이어야 함 기반 ν•¨μˆ˜μ™€ νŒŒμƒ ν•¨μˆ˜μ˜ 이름이 동일해야 함(μ†Œλ©Έμž μ œμ™Έ) 기반 ν•¨μˆ˜μ™€ νŒŒμƒ ν•¨μˆ˜μ˜ λ§€κ°œλ³€μˆ˜ ν˜•μ‹λ“€..

Tutorials/C++ : Advanced 2022. 10. 26. 09:53
Effective Modern C++ | ν•­λͺ© 11 : μ •μ˜λ˜μ§€ μ•Šμ€ λΉ„κ³΅κ°œ ν•¨μˆ˜λ³΄λ‹€ μ‚­μ œλœ ν•¨μˆ˜λ₯Ό μ„ ν˜Έν•˜λΌ

C++ ν”„λ‘œκ·Έλž˜λ¨Έμ˜ ν•„λ…μ„œμ΄μž 바이블인, 슀콧 λ§ˆμ΄μ–΄μŠ€μ˜ Modern Effective C++ λ₯Ό 읽고 κΈ°μ–΅ν•  λ‚΄μš©μ„ μš”μ•½ν•˜κ³  μžˆμŠ΅λ‹ˆλ‹€. κΌ­ μ½μ–΄λ³΄μ‹œκΈΈ μΆ”μ²œλ“œλ¦½λ‹ˆλ‹€! ν•­λͺ© 11 : μ •μ˜λ˜μ§€ μ•Šμ€ λΉ„κ³΅κ°œ ν•¨μˆ˜λ³΄λ‹€ μ‚­μ œλœ ν•¨μˆ˜λ₯Ό μ„ ν˜Έν•˜λΌ 핡심 : 1. μ •μ˜λ˜μ§€ μ•Šμ€ λΉ„κ³΅κ°œ ν•¨μˆ˜λ³΄λ‹€ μ‚­μ œλœ ν•¨μˆ˜λ₯Ό μ„ ν˜Έν•˜λΌ. 2. 비멀버 ν•¨μˆ˜μ™€ ν…œν”Œλ¦Ώ μΈμŠ€ν„΄μŠ€λ₯Ό λΉ„λ‘―ν•œ κ·Έ μ–΄λ–€ ν•¨μˆ˜λ„ μ‚­μ œν•  수 μžˆλ‹€. λ‹€λ₯Έ κ°œλ°œμžμ—κ²Œ μ œκ³΅ν•  μ½”λ“œλ₯Ό μž‘μ„±ν•  λ•Œ, κ·Έ κ°œλ°œμžκ°€ μ½”λ“œμ˜ νŠΉμ • ν•¨μˆ˜λ₯Ό ν˜ΈμΆœν•˜μ§€ λͺ»ν•˜κ²Œ ν•˜λŠ” κ°€μž₯ ν”ν•œ 방법은 κ·Έλƒ₯ κ·Έ ν•¨μˆ˜λ₯Ό μ„ μ–Έν•˜μ§€ μ•ŠλŠ” 것이닀. ν•˜μ§€λ§Œ μ»΄νŒŒμΌλŸ¬κ°€ λ•Œλ‘œλŠ” ν•¨μˆ˜λ₯Ό μžλ™μœΌλ‘œ μƒμ„±ν•˜λŠ” κ²½μš°κ°€ μžˆλ‹€. C++ 98 μ—μ„œλŠ” private 으둜 μ„ μ–Έ ν›„, μ •μ˜λ₯Ό ν•˜μ§€ μ•ŠλŠ” λ°©μ‹μœΌλ‘œ 이λ₯Ό λ°©μ§€ν•˜κΈ°λ„ ν•œλ‹€. μ‹€μ œλ‘œ μž…λ ₯..

Tutorials/C++ : Advanced 2022. 10. 26. 09:53
Effective Modern C++ | ν•­λͺ© 10 : λ²”μœ„ μ—†λŠ” enum 보닀 λ²”μœ„ μžˆλŠ” enum 을 μ„ ν˜Έν•˜λΌ

C++ ν”„λ‘œκ·Έλž˜λ¨Έμ˜ ν•„λ…μ„œμ΄μž 바이블인, 슀콧 λ§ˆμ΄μ–΄μŠ€μ˜ Modern Effective C++ λ₯Ό 읽고 κΈ°μ–΅ν•  λ‚΄μš©μ„ μš”μ•½ν•˜κ³  μžˆμŠ΅λ‹ˆλ‹€. κΌ­ μ½μ–΄λ³΄μ‹œκΈΈ μΆ”μ²œλ“œλ¦½λ‹ˆλ‹€! ν•­λͺ© 10 : λ²”μœ„ μ—†λŠ” enum 보닀 λ²”μœ„ μžˆλŠ” enum 을 μ„ ν˜Έν•˜λΌ 핡심 : 1. C++98 μŠ€νƒ€μΌμ˜ enum 을 μ΄μ œλŠ” λ²”μœ„ μ—†λŠ” enum 이라고 λΆ€λ₯Έλ‹€. 2. λ²”μœ„ μžˆλŠ” enum 의 μ—΄κ±°μžλ“€μ€ κ·Έ μ•ˆμ—μ„œλ§Œ 보인닀. 이 μ—΄κ±°μžλ“€μ€ 였직 μΊμŠ€νŒ…μ„ ν†΅ν•΄μ„œλ§Œ λ‹€λ₯Έ ν˜•μ‹μœΌλ‘œ λ³€ν™˜λœλ‹€. 3. λ²”μœ„ μžˆλŠ” enum κ³Ό λ²”μœ„ μ—†λŠ” enum λͺ¨λ‘ 바탕 ν˜•μ‹ 지정을 μ§€μ›ν•œλ‹€. λ²”μœ„ μžˆλŠ” enum 의 κΈ°λ³Έ 바탕 ν˜•μ‹μ€ int 이닀. λ²”μœ„ μ—†λŠ” enum μ—λŠ” κΈ°λ³Έ 바탕 ν˜•μ‹μ΄ μ—†λ‹€. 4. λ²”μœ„ μžˆλŠ” enum 은 항상 μ „λ°© 선언이 κ°€λŠ₯ν•˜λ‹€. λ²”μœ„ μ—†λŠ” enu..

Tutorials/C++ : Advanced 2022. 10. 26. 09:52