Notice
Recent Posts
Recent Comments
Link
관리 메뉴

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

KoreanFoodie's Study

Effective Modern C++ | ν•­λͺ© 4 : μ—°μ—­λœ ν˜•μ‹μ„ νŒŒμ•…ν•˜λŠ” 방법을 μ•Œμ•„λ‘λΌ

C++ ν”„λ‘œκ·Έλž˜λ¨Έμ˜ ν•„λ…μ„œμ΄μž 바이블인, 슀콧 λ§ˆμ΄μ–΄μŠ€μ˜ Modern Effective C++ λ₯Ό 읽고 κΈ°μ–΅ν•  λ‚΄μš©μ„ μš”μ•½ν•˜κ³  μžˆμŠ΅λ‹ˆλ‹€. κΌ­ μ½μ–΄λ³΄μ‹œκΈΈ μΆ”μ²œλ“œλ¦½λ‹ˆλ‹€! ν•­λͺ© 4 : μ—°μ—­λœ ν˜•μ‹μ„ νŒŒμ•…ν•˜λŠ” 방법을 μ•Œμ•„λ‘λΌ 핡심 : 1. μ»΄νŒŒμΌλŸ¬κ°€ μ—°μ—­ν•˜λŠ” ν˜•μ‹μ„ IDE νŽΈμ§‘κΈ°λ‚˜ 컴파일러 였λ₯˜ λ©”μ‹œμ§€, Boost TypeIndex 라이브러리λ₯Ό μ΄μš©ν•΄μ„œ νŒŒμ•…ν•  수 μžˆλŠ” κ²½μš°κ°€ λ§Žλ‹€. 2. 일뢀 λ„κ΅¬μ˜ κ²°κ³ΌλŠ” μœ μš©ν•˜μ§€λ„ μ•Šκ³  λΆ€μ •ν™•ν•  수 μžˆμœΌλ―€λ‘œ, C++ 의 ν˜•μ‹ μ—°μ—­ κ·œμΉ™λ“€μ„ μ œλŒ€λ‘œ μ΄ν•΄ν•˜λŠ” 것은 μ—¬μ „νžˆ ν•„μš”ν•œ 일이닀. ν˜•μ‹ μ—°μ—­ 정보λ₯Ό μ–»λŠ” 방법은 μ„Έ 가지 μ‹œμ μœΌλ‘œ λΆ„λ₯˜ν•  수 μžˆλ‹€. 1. IDE νŽΈμ§‘κΈ° 2. 컴파일러의 진단 λ©”μ‹œμ§€ decltype 을 μ‚¬μš©ν•˜λ©΄ λ‹€μŒκ³Ό 같은 경우, νƒ€μž…μ„ 컴파일 νƒ€μž„μ— μ•Œμ•„λ‚Ό 수..

Tutorials/C++ : Advanced 2022. 10. 26. 09:49
Effective Modern C++ | ν•­λͺ© 2 : auto 의 ν˜•μ‹ μ—°μ—­ κ·œμΉ™μ„ μˆ™μ§€ν•˜λΌ

C++ ν”„λ‘œκ·Έλž˜λ¨Έμ˜ ν•„λ…μ„œμ΄μž 바이블인, 슀콧 λ§ˆμ΄μ–΄μŠ€μ˜ Modern Effective C++ λ₯Ό 읽고 κΈ°μ–΅ν•  λ‚΄μš©μ„ μš”μ•½ν•˜κ³  μžˆμŠ΅λ‹ˆλ‹€. κΌ­ μ½μ–΄λ³΄μ‹œκΈΈ μΆ”μ²œλ“œλ¦½λ‹ˆλ‹€! ν•­λͺ© 2 : auto 의 ν˜•μ‹ μ—°μ—­ κ·œμΉ™μ„ μˆ™μ§€ν•˜λΌ 핡심 : 1. auto ν˜•μ‹ 연역은 λŒ€μ²΄λ‘œ ν…œν”Œλ¦Ώ ν˜•μ‹ μ—°μ—­κ³Ό κ°™μ§€λ§Œ, auto ν˜•μ‹ 연역은 μ€‘κ΄„ν˜Έ μ΄ˆκΈ°μΉ˜κ°€ std::initializer_list λ₯Ό λ‚˜νƒ€λ‚Έλ‹€κ³  κ°€μ •ν•˜λŠ” 반면, ν…œν”Œλ¦Ώ ν˜•μ‹ 연역은 그렇지 μ•Šλ‹€λŠ” 차이가 μžˆλ‹€. 2. ν•¨μˆ˜μ˜ λ°˜ν™˜ ν˜•μ‹μ΄λ‚˜ λžŒλ‹€ λ§€κ°œλ³€μˆ˜μ— 쓰인 auto 에 λŒ€ν•΄μ„œλŠ” auto ν˜•μ‹ 연역이 μ•„λ‹ˆλΌ ν…œν”Œλ¦Ώ ν˜•μ‹ 연역이 μ μš©λœλ‹€. ν•œ 가지 κΈ°μ΄ν•œ μ˜ˆμ™Έλ₯Ό λΉΌλ©΄, auto ν˜•μ‹ 연역이 곧 ν…œν”Œλ¦Ώ ν˜•μ‹ 연역이닀. κ·Έ κΈ°μ΄ν•œ ν•œ 가지 λ‹€λ₯Έ μ˜ˆμ™Έλ₯Ό 보자. #include #i..

Tutorials/C++ : Advanced 2022. 10. 26. 09:48
Effective Modern C++ | ν•­λͺ© 1 : ν…œν”Œλ¦Ώ ν˜•μ‹ μ—°μ—­ κ·œμΉ™μ„ μˆ™μ§€ν•˜λΌ

C++ ν”„λ‘œκ·Έλž˜λ¨Έμ˜ ν•„λ…μ„œμ΄μž 바이블인, 슀콧 λ§ˆμ΄μ–΄μŠ€μ˜ Modern Effective C++ λ₯Ό 읽고 κΈ°μ–΅ν•  λ‚΄μš©μ„ μš”μ•½ν•˜κ³  μžˆμŠ΅λ‹ˆλ‹€. κΌ­ μ½μ–΄λ³΄μ‹œκΈΈ μΆ”μ²œλ“œλ¦½λ‹ˆλ‹€! ν•­λͺ© 1 : ν…œν”Œλ¦Ώ ν˜•μ‹ μ—°μ—­ κ·œμΉ™μ„ μˆ™μ§€ν•˜λΌ 핡심 : 1. ν…œν”Œλ¦Ώ ν˜•μ‹ μ—°μ—­ 도쀑 μ°Έμ‘° ν˜•μ‹μ˜ μΈμˆ˜λ“€μ€ λΉ„μ°Έμ‘°λ‘œ μ·¨κΈ‰λœλ‹€. 즉, 참쑰성이 λ¬΄μ‹œλœλ‹€. 2. 보편 μ°Έμ‘° λ§€κ°œλ³€μˆ˜μ— λŒ€ν•œ ν˜•μ‹ μ—°μ—­ κ³Όμ •μ—μ„œ μ™Όκ°’ μΈμˆ˜λ“€μ€ νŠΉλ³„ν•˜κ²Œ μ·¨κΈ‰λœλ‹€. 3. κ°’ 전달 λ°©μ‹μ˜ λ§€κ°œλ³€μˆ˜μ— λŒ€ν•œ ν˜•μ‹ μ—°μ—­ κ³Όμ •μ—μ„œ const λ˜λŠ” volatile(λ˜λŠ” κ·Έ λ‘˜ 닀인) μΈμˆ˜λŠ” λΉ„ const, λΉ„ volatile 인수둜 μ·¨κΈ‰λœλ‹€. 4. ν…œν”Œλ¦Ώ ν˜•μ‹ μ—°μ—­ κ³Όμ •μ—μ„œ λ°°μ—΄μ΄λ‚˜ ν•¨μˆ˜ 이름에 ν•΄λ‹Ήν•˜λŠ” μΈμˆ˜λŠ” ν¬μΈν„°λ‘œ λΆ•κ΄΄ν•œλ‹€. 단, 그런 μΈμˆ˜κ°€ μ°Έμ‘°λ₯Ό μ΄ˆκΈ°ν™”ν•˜λŠ”λ° μ“°μ΄λŠ” 경우,..

Tutorials/C++ : Advanced 2022. 10. 26. 09:48
κ²Œμž„μˆ˜ν•™ - 행렬을 μ΄μš©ν•œ νšŒμ „λ³€ν™˜

μ΄λ“μš°λ‹˜μ˜ 'μ΄λ“μš°μ˜ κ²Œμž„μˆ˜ν•™' 책을 보며 쒋은 λ‚΄μš©μ„ μ •λ¦¬ν•˜κ³  μžˆμŠ΅λ‹ˆλ‹€. 더 μžμ„Έν•œ λ‚΄μš©μ΄ κΆκΈˆν•˜μ‹œλ‹€λ©΄, 책을 ꡬ맀해 직접 μ½μ–΄λ³΄μ‹œκΈ°λ₯Ό μΆ”μ²œλ“œλ¦½λ‹ˆλ‹€! 행렬을 μ΄μš©ν•œ νšŒμ „λ³€ν™˜ 행렬을 μ΄μš©ν•΄ μ–΄λ–€ 물체λ₯Ό λ°˜μ‹œκ³„ λ°©ν–₯으둜 90 도 νšŒμ „μ‹œν‚€λŠ” 행렬을 κ΅¬ν•œλ‹€κ³  생각해 보자. μœ„μ˜ 그림을 보면, 두 벑터가 λ‹€μŒκ³Ό 같이 λ³€ν™˜λœλ‹€. ν‘œμ€€κΈ°μ €λ²‘ν„° e1 : (1, 0) -> (0, 1) ν‘œμ€€κΈ°μ €λ²‘ν„° e2 : (0, 1) -> (-1, 0) λ”°λΌμ„œ λ°˜μ‹œκ³„λ‘œ 90 도 νšŒμ „ λ³€ν™˜μ„ μˆ˜ν–‰ν•˜λŠ” 행렬을 λ‹€μŒκ³Ό 같이 섀계할 수 μžˆλ‹€. μ‹œκ³„λ°©ν–₯으둜 90 도 νšŒμ „μ„ ν•˜λŠ” κ²½μš°λŠ” λ‹€μŒκ³Ό 같을 것이닀 : 사싀 90 도 νšŒμ „μ˜ κ²½μš°λŠ” 행렬을 μ‚¬μš©ν•˜μ§€ μ•Šκ³  κ°„λ‹¨ν•˜κ²Œ λ‹€μŒκ³Ό 같이 ꡬ할 수 μžˆλ‹€. - μ‹œκ³„ λ°©ν–₯으둜 90 도 νšŒμ „ : (x, y) ..

Game Dev/Game Math 2022. 10. 26. 07:03
Effective C++ | ν•­λͺ© 54 : TR1 을 ν¬ν•¨ν•œ ν‘œμ€€ 라이브러리 κ΅¬μ„±μš”μ†Œμ™€ νŽΈμ•ˆν•œ μΉœκ΅¬κ°€ 되자

C++ ν”„λ‘œκ·Έλž˜λ¨Έμ˜ ν•„λ…μ„œμ΄μž 바이블인, 슀콧 λ§ˆμ΄μ–΄μŠ€μ˜ Modern Effective C++ λ₯Ό 읽고 κΈ°μ–΅ν•  λ‚΄μš©μ„ μš”μ•½ν•˜κ³  μžˆμŠ΅λ‹ˆλ‹€. κΌ­ μ½μ–΄λ³΄μ‹œκΈΈ μΆ”μ²œλ“œλ¦½λ‹ˆλ‹€! ν•­λͺ© 54 : TR1 을 ν¬ν•¨ν•œ ν‘œμ€€ 라이브러리 κ΅¬μ„±μš”μ†Œμ™€ νŽΈμ•ˆν•œ μΉœκ΅¬κ°€ 되자 핡심 : 1. μ΅œμ΄ˆμ— μƒμ •λœ C++ ν‘œμ€€ 라이브러리의 μ£Όμš” κ΅¬μ„±μš”μ†ŒλŠ” STL, iostream, λ‘œμΌ€μΌ 등이닀. 2. TR1 이 λ„μž…λ˜λ©΄μ„œ μΆ”κ°€λœ 것은 슀마트 포인터, μΌλ°˜ν™” ν•¨μˆ˜, ν•΄μ‹œ 기반 μ»¨ν…Œμ΄λ„ˆ, μ •κ·œ ν‘œν˜„μ‹ 등등이닀 3. TR1 μžμ²΄λŠ” λ‹¨μˆœνžˆ λͺ…μ„Έμ„œμ΄λ©°, TR1 κΈ°λŠ₯을 μ‚¬μš©ν•˜κΈ° μœ„ν•΄μ„œλŠ” λͺ…μ„Έλ₯Ό κ΅¬ν˜„ν•œ μ½”λ“œλ₯Ό ꡬ해야 ν•œλ‹€. λŒ€ν‘œμ μΈ 자료처 쀑 ν•œ ꡰ데가 λ°”λ‘œ λΆ€μŠ€νŠΈμ΄λ‹€. 사싀 ν•΄λ‹Ή 책은 ν˜„μž¬ μ‹œμ (2022λ…„) μœΌλ‘œλΆ€ν„° 7λ…„ 전에 λ‚˜μ˜¨ κ°œμ •νŒμ΄λ―€λ‘œ, μ±…μ—μ„œ ..

Tutorials/C++ : Advanced 2022. 10. 26. 06:31
Effective C++ | ν•­λͺ© 52 : μœ„μΉ˜μ§€μ • new λ₯Ό μž‘μ„±ν•œλ‹€λ©΄ μœ„μΉ˜μ§€μ • delete 도 같이 μ€€λΉ„ν•˜μž

C++ ν”„λ‘œκ·Έλž˜λ¨Έμ˜ ν•„λ…μ„œμ΄μž 바이블인, 슀콧 λ§ˆμ΄μ–΄μŠ€μ˜ Modern Effective C++ λ₯Ό 읽고 κΈ°μ–΅ν•  λ‚΄μš©μ„ μš”μ•½ν•˜κ³  μžˆμŠ΅λ‹ˆλ‹€. κΌ­ μ½μ–΄λ³΄μ‹œκΈΈ μΆ”μ²œλ“œλ¦½λ‹ˆλ‹€! ν•­λͺ© 52 : μœ„μΉ˜μ§€μ • new λ₯Ό μž‘μ„±ν•œλ‹€λ©΄ μœ„μΉ˜μ§€μ • delete 도 같이 μ€€λΉ„ν•˜μž 핡심 : 1. operator new ν•¨μˆ˜μ˜ μœ„μΉ˜μ§€μ •(placement) 버전을 λ§Œλ“€ λ•ŒλŠ”, 이 ν•¨μˆ˜μ™€ 짝을 μ΄λ£¨λŠ” μœ„μΉ˜μ§€μ • λ²„μ „μ˜ operator delete ν•¨μˆ˜λ„ κΌ­ λ§Œλ“€μž. 이 일을 빼먹으면, 찾아내기도 νž˜λ“€κ³  생겼닀가 μ•ˆ 생겼닀 ν•˜λŠ” λ©”λͺ¨λ¦¬ λˆ„μΆœ ν˜„μƒμ„ κ²½ν—˜ν•˜κ²Œ λœλ‹€. 2. new 및 delete 의 μœ„μΉ˜μ§€μ • 버전을 μ„ μ–Έν•  λ•ŒλŠ”, μ˜λ„ν•œ 바도 μ•„λ‹Œλ° μ΄λ“€μ˜ ν‘œμ€€ 버전이 κ°€λ €μ§€λŠ” 일이 생기지 μ•Šλ„λ‘ μ£Όμ˜ν•˜μž. μ•„λž˜ μ½”λ“œλ₯Ό 보자. Widget *pW =..

Tutorials/C++ : Advanced 2022. 10. 26. 06:31
Effective C++ | ν•­λͺ© 51 : new 및 delete λ₯Ό μž‘μ„±ν•  λ•Œ 따라야 ν•  기쑴의 κ΄€λ‘€λ₯Ό 잘 μ•Œμ•„ λ‘μž

C++ ν”„λ‘œκ·Έλž˜λ¨Έμ˜ ν•„λ…μ„œμ΄μž 바이블인, 슀콧 λ§ˆμ΄μ–΄μŠ€μ˜ Modern Effective C++ λ₯Ό 읽고 κΈ°μ–΅ν•  λ‚΄μš©μ„ μš”μ•½ν•˜κ³  μžˆμŠ΅λ‹ˆλ‹€. κΌ­ μ½μ–΄λ³΄μ‹œκΈΈ μΆ”μ²œλ“œλ¦½λ‹ˆλ‹€! ν•­λͺ© 51 : new 및 delete λ₯Ό μž‘μ„±ν•  λ•Œ 따라야 ν•  기쑴의 κ΄€λ‘€λ₯Ό 잘 μ•Œμ•„ λ‘μž 핡심 : 1. κ΄€λ‘€μ μœΌλ‘œ, operator new ν•¨μˆ˜λŠ” λ©”λͺ¨λ¦¬ 할당을 λ°˜λ³΅ν•΄μ„œ μ‹œλ„ν•˜λŠ” λ¬΄ν•œ 루프λ₯Ό κ°€μ Έμ•Ό ν•˜κ³ , λ©”λͺ¨λ¦¬ ν• λ‹Ή μš”κ΅¬λ₯Ό λ§Œμ‘±μ‹œν‚¬ 수 없을 λ•Œ new 처리자λ₯Ό ν˜ΈμΆœν•΄μ•Ό ν•˜λ©°, 0λ°”μ΄νŠΈμ— λŒ€ν•œ λŒ€μ±…λ„ μžˆμ–΄μ•Ό ν•œλ‹€. 클래슀 μ „μš© 버전은 μžμ‹ μ΄ ν• λ‹Ήν•˜κΈ°λ‘œ μ˜ˆμ •λœ 크기보닀 더 큰(ν‹€λ¦°) λ©”λͺ¨λ¦¬ 블둝에 λŒ€ν•œ μš”κ΅¬λ„ μ²˜λ¦¬ν•΄μ•Ό ν•œλ‹€. 2. operator delete ν•¨μˆ˜λŠ” 널 포인터가 듀어왔을 λ•Œ 아무 일도 ν•˜μ§€ μ•Šμ•„μ•Ό ν•œλ‹€. 클래슀 μ „μš© λ²„μ „μ˜ ..

Tutorials/C++ : Advanced 2022. 10. 26. 06:29