Notice
Recent Posts
Recent Comments
Link
관리 메뉴

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

KoreanFoodie's Study

Effective C++ | ν•­λͺ© 7 : λ‹€ν˜•μ„±μ„ 가진 κΈ°λ³Έ ν΄λž˜μŠ€μ—μ„œλŠ” μ†Œλ©Έμžλ₯Ό λ°˜λ“œμ‹œ 가상 μ†Œλ©Έμžλ‘œ μ„ μ–Έν•˜μž

C++ ν”„λ‘œκ·Έλž˜λ¨Έμ˜ ν•„λ…μ„œμ΄μž 바이블인, 슀콧 λ§ˆμ΄μ–΄μŠ€μ˜ Modern Effective C++ λ₯Ό 읽고 κΈ°μ–΅ν•  λ‚΄μš©μ„ μš”μ•½ν•˜κ³  μžˆμŠ΅λ‹ˆλ‹€. κΌ­ μ½μ–΄λ³΄μ‹œκΈΈ μΆ”μ²œλ“œλ¦½λ‹ˆλ‹€! ν•­λͺ© 7 : λ‹€ν˜•μ„±μ„ 가진 κΈ°λ³Έ ν΄λž˜μŠ€μ—μ„œλŠ” μ†Œλ©Έμžλ₯Ό λ°˜λ“œμ‹œ 가상 μ†Œλ©Έμžλ‘œ μ„ μ–Έν•˜μž 핡심 : 1. λ‹€ν˜•μ„±μ„ 가진 κΈ°λ³Έ ν΄λž˜μŠ€μ—λŠ” λ°˜λ“œμ‹œ 가상 μ†Œλ©Έμžλ₯Ό μ„ μ–Έν•΄μ•Ό ν•œλ‹€. 즉, μ–΄λ–€ ν΄λž˜μŠ€κ°€ 가상 ν•¨μˆ˜λ₯Ό ν•˜λ‚˜λΌλ„ κ°–κ³  있으면, 이 클래슀의 μ†Œλ©Έμžλ„ 가상 μ†Œλ©Έμžμ΄μ–΄μ•Ό ν•œλ‹€. 2. κΈ°λ³Έ 클래슀둜 μ„€κ³„λ˜μ§€ μ•Šμ•˜κ±°λ‚˜ λ‹€ν˜•μ„±μ„ 갖도둝 μ„€κ³„λ˜μ§€ μ•Šμ€ ν΄λž˜μŠ€μ—λŠ” κ°€μƒμ†Œλ©Έμžλ₯Ό μ„ μ–Έν•˜μ§€ 말아야 ν•œλ‹€. λ‹€μŒκ³Ό 같은 TimeKeeper 클래슀λ₯Ό λ§Œλ“€κ³ , νŒ©ν† λ¦¬ λ©”μ„œλ“œ νŒ¨ν„΄μœΌλ‘œ νŒŒμƒ 클래슀의 νƒ€μž…μ— λ§žλŠ” 객체λ₯Ό λ¦¬ν„΄ν•œλ‹€κ³  κ°€μ •ν•˜μž. class TimeKeeper { ..

Tutorials/C++ : Advanced 2022. 10. 25. 16:05
Effective C++ | ν•­λͺ© 6 : μ»΄νŒŒμΌλŸ¬κ°€ λ§Œλ“€μ–΄λ‚Έ ν•¨μˆ˜κ°€ ν•„μš” μ—†μœΌλ©΄ ν™•μ‹€νžˆ μ΄λ“€μ˜ μ‚¬μš©μ„ κΈˆν•΄ λ²„λ¦¬μž

C++ ν”„λ‘œκ·Έλž˜λ¨Έμ˜ ν•„λ…μ„œμ΄μž 바이블인, 슀콧 λ§ˆμ΄μ–΄μŠ€μ˜ Modern Effective C++ λ₯Ό 읽고 κΈ°μ–΅ν•  λ‚΄μš©μ„ μš”μ•½ν•˜κ³  μžˆμŠ΅λ‹ˆλ‹€. κΌ­ μ½μ–΄λ³΄μ‹œκΈΈ μΆ”μ²œλ“œλ¦½λ‹ˆλ‹€! ν•­λͺ© 6 : μ»΄νŒŒμΌλŸ¬κ°€ λ§Œλ“€μ–΄λ‚Έ ν•¨μˆ˜κ°€ ν•„μš” μ—†μœΌλ©΄ ν™•μ‹€νžˆ μ΄λ“€μ˜ μ‚¬μš©μ„ κΈˆν•΄ λ²„λ¦¬μž 핡심 : μ»΄νŒŒμΌλŸ¬μ—μ„œ μžλ™μœΌλ‘œ μ œκ³΅ν•˜λŠ” κΈ°λŠ₯을 ν—ˆμš©μΉ˜ μ•ŠμœΌλ €λ©΄, λŒ€μ‘λ˜λŠ” 멀버 ν•¨μˆ˜λ₯Ό private 으둜 μ„ μ–Έν•œ 후에 κ΅¬ν˜„μ€ ν•˜μ§€ μ•Šμ€ μ±„λ‘œ λ‘μž. Uncopyable κ³Ό λΉ„μŠ·ν•œ κΈ°λ³Έ 클래슀λ₯Ό μ“°λŠ” 것도 ν•œ 방법이닀. μš°λ¦¬κ°€ 뢀동산을 νŒλ§€ν•˜λŠ” ν”„λ‘œκ·Έλž¨μ„ λ§Œλ“€κ²Œ λ˜μ—ˆλŠ”λ°, 각 μžμ‚°μ€ μ„Έμƒμ—μ„œ ν•˜λ‚˜λ°–μ— μ—†λ‹€λŠ” 것을 μ μš©ν•΄ 달라고 μš”μ²­ν–ˆλ‹€κ³  κ°€μ •ν•΄ 보자. 즉, λ‹€μŒκ³Ό 같은 μ½”λ“œλŠ” 컴파일이 되면 μ•ˆλœλ‹€λŠ” λœ»μ΄λ‹€! class HomeForSale {...}; .....

Tutorials/C++ : Advanced 2022. 10. 25. 16:04
Effective C++ | ν•­λͺ© 5 : C++ κ°€ μ€κ·ΌμŠ¬μ© λ§Œλ“€μ–΄ ν˜ΈμΆœν•΄ λ²„λ¦¬λŠ” ν•¨μˆ˜λ“€μ— 촉각을 μ„Έμš°μž

C++ ν”„λ‘œκ·Έλž˜λ¨Έμ˜ ν•„λ…μ„œμ΄μž 바이블인, 슀콧 λ§ˆμ΄μ–΄μŠ€μ˜ Modern Effective C++ λ₯Ό 읽고 κΈ°μ–΅ν•  λ‚΄μš©μ„ μš”μ•½ν•˜κ³  μžˆμŠ΅λ‹ˆλ‹€. κΌ­ μ½μ–΄λ³΄μ‹œκΈΈ μΆ”μ²œλ“œλ¦½λ‹ˆλ‹€! ν•­λͺ© 5 : C++ κ°€ μ€κ·ΌμŠ¬μ© λ§Œλ“€μ–΄ ν˜ΈμΆœν•΄ λ²„λ¦¬λŠ” ν•¨μˆ˜λ“€μ— 촉각을 μ„Έμš°μž 핡심 : μ»΄νŒŒμΌλŸ¬λŠ” κ²½μš°μ— 따라 ν΄λž˜μŠ€μ— λŒ€ν•΄ κΈ°λ³Έ μƒμ„±μž, 볡사 μƒμ„±μž, 볡사 λŒ€μž… μ—°μ‚°μž, μ†Œλ©Έμžλ₯Ό μ•”μ‹œμ μœΌλ‘œ λ§Œλ“€μ–΄ 놓을 수 μžˆλ‹€ 클래슀λ₯Ό λ§Œλ“€ λ•Œ, μ»΄νŒŒμΌλŸ¬λŠ” κΈ°λ³Έ μƒμ„±μž, 볡사 μƒμ„±μž, 볡사 λŒ€μž… μ—°μ‚°μž, μ†Œλ©Έμžλ₯Ό μ•”μ‹œμ μœΌλ‘œ μƒμ„±ν•œλ‹€. μ†Œλ©ΈμžλŠ” ν•΄λ‹Ή ν΄λž˜μŠ€κ°€ μƒμ†ν•œ κΈ°λ³Έ 클래슀의 μ†Œλ©Έμžκ°€ 가상 μ†Œλ©Έμžλ‘œ λ˜μ–΄ μžˆμ§€ μ•ŠμœΌλ©΄ μ—­μ‹œ 비가상 μ†Œλ©Έμžλ‘œ λ§Œλ“€μ–΄μ§„λ‹€(λ¬Όλ‘  μ‚¬μš©μžκ°€ μƒμ„±μžλ₯Ό μ„ μ–Έν•˜λ©΄ μ»΄νŒŒμΌλŸ¬κ°€ κΈ°λ³Έ μƒμ„±μžλ₯Ό λ§Œλ“€μ§€ μ•ŠλŠ”λ‹€). κ·Έλ ‡λ‹€λ©΄ μ΄λŸ¬ν•œ κΈ°λ³Έ μƒμ„±μžκ°€ ..

Tutorials/C++ : Advanced 2022. 10. 25. 16:03
Effective C++ | ν•­λͺ© 4 : 객체λ₯Ό μ‚¬μš©ν•˜κΈ° 전에 λ°˜λ“œμ‹œ κ·Έ 객체λ₯Ό μ΄ˆκΈ°ν™”ν•˜μž

C++ ν”„λ‘œκ·Έλž˜λ¨Έμ˜ ν•„λ…μ„œμ΄μž 바이블인, 슀콧 λ§ˆμ΄μ–΄μŠ€μ˜ Modern Effective C++ λ₯Ό 읽고 κΈ°μ–΅ν•  λ‚΄μš©μ„ μš”μ•½ν•˜κ³  μžˆμŠ΅λ‹ˆλ‹€. κΌ­ μ½μ–΄λ³΄μ‹œκΈΈ μΆ”μ²œλ“œλ¦½λ‹ˆλ‹€! ν•­λͺ© 4 : 객체λ₯Ό μ‚¬μš©ν•˜κΈ° 전에 λ°˜λ“œμ‹œ κ·Έ 객체λ₯Ό μ΄ˆκΈ°ν™”ν•˜μž 핡심 : 1. 기본제곡 νƒ€μž…μ˜ κ°μ²΄λŠ” 직접 μ†μœΌλ‘œ μ΄ˆκΈ°ν™”ν•˜μž. 2. μƒμ„±μžμ—μ„œλŠ”, μƒμ„±μž λ³Έλ¬Έ 내무에 데이터 멀버에 λŒ€ν•œ λŒ€μž…λ¬Έμ„ 넣지 μ•Šκ³  μ΄ˆκΈ°ν™” 리슀트λ₯Ό μ‚¬μš©ν•˜μž. λ˜ν•œ 데이터 멀버가 μ„ μ–Έλœ μˆœμ„œμ™€ λ˜‘κ°™μ΄ λ‚˜μ—΄ν•˜μž. 3. μ—¬λŸ¬ λ²ˆμ—­ λ‹¨μœ„μ— μžˆλŠ” 비지역 정적 κ°μ²΄λ“€μ˜ μ΄ˆκΈ°ν™” μˆœμ„œ λ¬Έμ œλŠ” ν”Όν•΄μ„œ 섀계해야 ν•œλ‹€. 비지역 정적 객체λ₯Ό 지역 정적 객체둜 λ°”κΎΈλ©΄ λœλ‹€. μƒμ„±μžλ₯Ό λ‹€μŒκ³Ό 같이 μ“°λŠ” 것은, 생성과 λ™μ‹œμ— 'μ΄ˆκΈ°ν™”' ν•˜λŠ” 것이 μ•„λ‹Œ, 'λŒ€μž…'을 ν–‰ν•˜λŠ” 것이닀. class Us..

Tutorials/C++ : Advanced 2022. 10. 25. 16:03
Effective C++ | ν•­λͺ© 3 : λ‚Œμƒˆλ§Œ 보이면 const λ₯Ό λ“€μ΄λŒ€ 보자!

C++ ν”„λ‘œκ·Έλž˜λ¨Έμ˜ ν•„λ…μ„œμ΄μž 바이블인, 슀콧 λ§ˆμ΄μ–΄μŠ€μ˜ Modern Effective C++ λ₯Ό 읽고 κΈ°μ–΅ν•  λ‚΄μš©μ„ μš”μ•½ν•˜κ³  μžˆμŠ΅λ‹ˆλ‹€. κΌ­ μ½μ–΄λ³΄μ‹œκΈΈ μΆ”μ²œλ“œλ¦½λ‹ˆλ‹€! ν•­λͺ© 3 : λ‚Œμƒˆλ§Œ 보이면 const λ₯Ό λ“€μ΄λŒ€ 보자! 핡심 : 1. const λ₯Ό λΆ™μ—¬ μ„ μ–Έν•˜λ©΄ μ»΄νŒŒμΌλŸ¬κ°€ μ‚¬μš©μƒμ˜ μ—λŸ¬λ₯Ό μž‘μ•„λ‚΄λŠ” 데 도움을 μ€€λ‹€. const λŠ” μ–΄λ–€ μœ νš¨λ²”μœ„μ— μžˆλŠ” 객체에도 뢙을 수 있으며, ν•¨μˆ˜ λ§€κ°œλ³€μˆ˜ 및 λ°˜ν™˜ νƒ€μž…μ—λ„ 뢙을 수 있으며, 멀버 ν•¨μˆ˜μ—λ„ 뢙을 수 μžˆλ‹€. 2. 컴파일러 μͺ½μ—μ„œ 보면 λΉ„νŠΈμˆ˜μ€€ μƒμˆ˜μ„±μ„ μ§€μΌœμ•Ό ν•˜μ§€λ§Œ, μš°λ¦¬λŠ” κ°œλ…μ μΈ(논리적인) μƒμˆ˜μ„±μ„ μ‚¬μš©ν•΄μ„œ ν”„λ‘œκ·Έλž˜λ°ν•΄μ•Ό ν•œλ‹€. 3. μƒμˆ˜ 멀버 λΉ› λΉ„μƒμˆ˜ 멀버 ν•¨μˆ˜κ°€ κΈ°λŠ₯적으둜 μ„œλ‘œ λ˜‘κ°™κ²Œ κ΅¬ν˜„λ˜μ–΄ μžˆμ„ κ²½μš°μ—λŠ” μ½”λ“œ 쀑볡을 ν”Όν•˜λŠ” 것이 쒋은데, μ΄λ•Œ..

Tutorials/C++ : Advanced 2022. 10. 25. 16:02
Effective C++ | ν•­λͺ© 2 : #define 을 μ“°λ €κ±°λ“  const, enum, inline 을 λ– μ˜¬λ¦¬μž

C++ ν”„λ‘œκ·Έλž˜λ¨Έμ˜ ν•„λ…μ„œμ΄μž 바이블인, 슀콧 λ§ˆμ΄μ–΄μŠ€μ˜ Modern Effective C++ λ₯Ό 읽고 κΈ°μ–΅ν•  λ‚΄μš©μ„ μš”μ•½ν•˜κ³  μžˆμŠ΅λ‹ˆλ‹€. κΌ­ μ½μ–΄λ³΄μ‹œκΈΈ μΆ”μ²œλ“œλ¦½λ‹ˆλ‹€! ν•­λͺ© 2 : #define 을 μ“°λ €κ±°λ“  const, enum, inline 을 λ– μ˜¬λ¦¬μž 핡심 : 1. λ‹¨μˆœν•œ μƒμˆ˜λ₯Ό μ“Έ λ•ŒλŠ”, #define 보닀 const 객체 ν˜Ήμ€ enum 을 μš°μ„  μƒκ°ν•˜μž. 2. ν•¨μˆ˜μ²˜λŸΌ μ“°μ΄λŠ” 맀크둜λ₯Ό λ§Œλ“€λ €λ©΄, #define λ§€ν¬λ‘œλ³΄λ‹€ 인라인 ν•¨μˆ˜λ₯Ό μš°μ„  μƒκ°ν•˜μž. ν•­λͺ© 2의 핡심은, 가급적 μ„ ν–‰ μ²˜λ¦¬μžλ³΄λ‹€λŠ” μ»΄νŒŒμΌλŸ¬μ™€ μΉœν•˜κ²Œ μ§€λ‚΄λŠ” 게 μ’‹λ‹€λŠ” 것이닀. λ‹€μŒκ³Ό 같은 예λ₯Ό 보자. #define ASPECT_RATIO 1.653 μœ„μ˜ 경우, ν•΄λ‹Ή 뢀뢄을 디버깅할 λ•Œ, ASPECT_RATIO λŠ” μ»΄νŒŒμΌλŸ¬κ°€ μ“°λŠ” 기호 ν…Œ..

Tutorials/C++ : Advanced 2022. 10. 25. 16:02
Effective C++ | ν•­λͺ© 1 : C++ λ₯Ό μ–Έμ–΄λ“€μ˜ μ—°ν•©μ²΄λ‘œ λ°”λΌλ³΄λŠ” μ•ˆλͺ©μ€ ν•„μˆ˜

C++ ν”„λ‘œκ·Έλž˜λ¨Έμ˜ ν•„λ…μ„œμ΄μž 바이블인, 슀콧 λ§ˆμ΄μ–΄μŠ€μ˜ Modern Effective C++ λ₯Ό 읽고 κΈ°μ–΅ν•  λ‚΄μš©μ„ μš”μ•½ν•˜κ³  μžˆμŠ΅λ‹ˆλ‹€. κΌ­ μ½μ–΄λ³΄μ‹œκΈΈ μΆ”μ²œλ“œλ¦½λ‹ˆλ‹€! ν•­λͺ© 1 : C++ λ₯Ό μ–Έμ–΄λ“€μ˜ μ—°ν•©μ²΄λ‘œ λ°”λΌλ³΄λŠ” μ•ˆλͺ©μ€ ν•„μˆ˜ 핡심 : 1. C++ λ₯Ό μ‚¬μš©ν•œ 효과적인 ν”„λ‘œκ·Έλž˜λ° κ·œμΉ™μ€, C++ 의 μ–΄λ–€ 뢀뢄을 μ‚¬μš©ν•˜λŠλƒμ— 따라 달라진닀! C++ 을 이루고 μžˆλŠ” ν•˜μœ„ μš”μ†Œ (Building Block) 은 크게 4 가지이닀. C (C μ—λŠ” ν…œν”Œλ¦Ώλ„ μ—†κ³ , μ˜ˆμ™Έλ„ μ—†κ³ , μ˜€λ²„λ‘œλ”©λ„ μ—†λ‹€) 객체 지ν–₯ κ°œλ…μ˜ C++ (클래슀λ₯Ό μ“°λŠ” C 에 κ΄€ν•œ λͺ¨λ“  것듀. μΊ‘μŠν™”, 상속, λ‹€ν˜•μ„±, κ°€μƒν•¨μˆ˜ λ“±) ν…œν”Œλ¦Ώ C++ (ν…œν”Œλ¦Ώ 메타 ν”„λ‘œκ·Έλž˜λ°κΉŒμ§€) STL (container, iterator, algorithm, fu..

Tutorials/C++ : Advanced 2022. 10. 25. 16:01
κ²Œμž„μˆ˜ν•™ - μ‚Όκ°ν•¨μˆ˜λ₯Ό ν™œμš©ν•œ 물체의 νšŒμ „

μ΄λ“μš°λ‹˜μ˜ 'μ΄λ“μš°μ˜ κ²Œμž„μˆ˜ν•™' 책을 보며 쒋은 λ‚΄μš©μ„ μ •λ¦¬ν•˜κ³  μžˆμŠ΅λ‹ˆλ‹€. 더 μžμ„Έν•œ λ‚΄μš©μ΄ κΆκΈˆν•˜μ‹œλ‹€λ©΄, 책을 ꡬ맀해 직접 μ½μ–΄λ³΄μ‹œκΈ°λ₯Ό μΆ”μ²œλ“œλ¦½λ‹ˆλ‹€! μ‚Όκ°ν•¨μˆ˜λ₯Ό ν™œμš©ν•œ 물체의 νšŒμ „ μ‚Όκ°ν•¨μˆ˜λ₯Ό 톡해 물체λ₯Ό νšŒμ „ν•˜λ©΄ μ’Œν‘œκ°’μ΄ μ–΄λ–»κ²Œ λ³€ν• κΉŒ? λ¨Όμ €, λ‹€μŒκ³Ό 같이 μ’Œν‘œ (1, 1) 을 θ 만큼 λ°˜μ‹œκ³„ λ°©ν–₯으둜 νšŒμ „ν•˜λ©΄, λ‹€μŒκ³Ό 같이 κ·Έλ €μ§€κ²Œ λœλ‹€. μœ„μ—μ„œ, 벑터 v λŠ” κΈ°μ € 벑터 e1 와 e2 의 ν•©μœΌλ‘œ ν‘œν˜„λ˜λ©°, 이λ₯Ό 각 θ 만큼 νšŒμ „ μ‹œν‚¨ 녀석을 (cosθ - sinθ, sinθ + cosθ) 둜 ν‘œν˜„ν•  수 μžˆμŒμ„ μ•Œ 수 μžˆλ‹€. λ™μΌν•œ μ›λ¦¬λ‘œ, μž„μ˜μ˜ 벑터 (x, y) λ₯Ό 각 θ 만큼 νšŒμ „μ‹œμΌœ (x', y') λ₯Ό κ΅¬ν•΄λ³΄μž. 식은 λ‹€μŒκ³Ό 같이 μ“Έ 수 μžˆλ‹€. 기저벑터λ₯Ό ν™œμš©ν•˜λ©΄, μž„μ˜μ˜ 벑터 u λ₯Ό 각 θ 만..

Game Dev/Game Math 2022. 10. 23. 23:39
Unreal μ—μ„œ Actor 와 ActorComponent 의 κ°œλ… (vs. Unity μ—μ„œμ˜ GameObject 와 비ꡐ)

Actor 와 ActorComponent μœ λ‹ˆν‹°μ—μ„œλŠ” κ²Œμž„ 였브젝트 μ•„λž˜μ— κ²Œμž„ 였브젝트λ₯Ό λ„£λŠ” μ‹μœΌλ‘œ Hierarchy λ₯Ό λ§Œλ“€μ–΄λ‚Ό 수 μžˆλ‹€. ν•˜μ§€λ§Œ 언리얼은 그런 μ‹μœΌλ‘œ λ™μž‘ν•˜μ§€ μ•ŠλŠ”λ‹€. μœ λ‹ˆν‹°μ—μ„œλŠ” 항곡기가 μžˆλ‹€κ³  ν–ˆμ„ λ•Œ, ν”„λ¦¬νŒΉμ— 각쒅 κ²Œμž„ 였브젝트λ₯Ό ν•˜μœ„μ— λ„£μ–΄ μ‘°ν•©ν•˜λŠ” λ°©μ‹μœΌλ‘œ ν•΄λ‹Ή 였브젝트λ₯Ό μ œμž‘ν•  수 μžˆλ‹€. 그런데 μ–Έλ¦¬μ–Όμ—μ„œ Actor λŠ” Bucket 같은 κ°œλ…μœΌλ‘œ, λ‹€μ–‘ν•œ μ•‘ν„° μ»΄ν¬λ„ŒνŠΈλ₯Ό λ‹΄κ³  μžˆλ‹€. 즉, 언리얼은 Bucket μ•ˆμ— λ‹€λ₯Έ Bucket 을 λ„£λŠ” λ°©μ‹μœΌλ‘œ 였브젝트λ₯Ό μƒμ„±ν•˜μ§€ μ•ŠλŠ”λ‹€. μ•‘ν„° μ»΄ν¬λ„ŒνŠΈλŠ” μž¬μ‚¬μš©κ°€λŠ₯ν•œ κΈ°λŠ₯을 μ •μ˜ν•˜λŠ” μ»΄ν¬λ„ŒνŠΈμ— λŒ€ν•œ 베이슀 클래슀둜 좩돌, λ©”μ‹œ, μ›”λ“œ 이동, μ†Œλ¦¬ μž¬μƒ, λΉ›κ³Ό λͺ…μ•” λ“±μ˜ λ‹€μ–‘ν•œ κΈ°λŠ₯을 μ§€μ›ν•œλ‹€. μ–Έλ¦¬μ–Όμ—μ„œλŠ” νŠΈλžœμŠ€νΌμ„ 가진 μ•‘ν„° μ»΄..

Game Dev/Unreal C++ : Study 2022. 10. 20. 17:53