Notice
Recent Posts
Recent Comments
Link
관리 메뉴

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

KoreanFoodie's Study

Effective C++ | ν•­λͺ© 34 : μΈν„°νŽ˜μ΄μŠ€ 상속과 κ΅¬ν˜„ μƒμ†μ˜ 차이λ₯Ό μ œλŒ€λ‘œ νŒŒμ•…ν•˜κ³  κ΅¬λ³„ν•˜μž

C++ ν”„λ‘œκ·Έλž˜λ¨Έμ˜ ν•„λ…μ„œμ΄μž 바이블인, 슀콧 λ§ˆμ΄μ–΄μŠ€μ˜ Modern Effective C++ λ₯Ό 읽고 κΈ°μ–΅ν•  λ‚΄μš©μ„ μš”μ•½ν•˜κ³  μžˆμŠ΅λ‹ˆλ‹€. κΌ­ μ½μ–΄λ³΄μ‹œκΈΈ μΆ”μ²œλ“œλ¦½λ‹ˆλ‹€! ν•­λͺ© 34 : μΈν„°νŽ˜μ΄μŠ€ 상속과 κ΅¬ν˜„ μƒμ†μ˜ 차이λ₯Ό μ œλŒ€λ‘œ νŒŒμ•…ν•˜κ³  κ΅¬λ³„ν•˜μž 핡심 : 1. μΈν„°νŽ˜μ΄μŠ€ 상속은 κ΅¬ν˜„ 상속과 λ‹€λ₯΄λ‹€. public μƒμ†μ—μ„œ, νŒŒμƒ ν΄λž˜μŠ€λŠ” 항상 κΈ°λ³Έ 클래슀의 μΈν„°νŽ˜μ΄μŠ€λ₯Ό λͺ¨λ‘ λ¬Όλ €λ°›λŠ”λ‹€. 2. 순수 가상 ν•¨μˆ˜λŠ” μΈν„°νŽ˜μ΄μŠ€ μƒμ†λ§Œμ„ ν—ˆμš©ν•œλ‹€. 3. λ‹¨μˆœ(λΉ„μˆœμˆ˜) 가상 ν•¨μˆ˜λŠ” μΈν„°νŽ˜μ΄μŠ€ 상속과 λ”λΆˆμ–΄ κΈ°λ³Έ κ΅¬ν˜„μ˜ 상속도 κ°€λŠ₯ν•˜λ„λ‘ μ§€μ •ν•œλ‹€. 4. 비가상 ν•¨μˆ˜λŠ” μΈν„°νŽ˜μ΄μŠ€ 상속과 λ”λΆˆμ–΄ ν•„μˆ˜ κ΅¬ν˜„μ˜ 상속도 κ°€ν•˜λ„λ‘ μ§€μ •ν•œλ‹€. 클래슀 μ„€κ³„μžμ˜ μž…μž₯μ—μ„œ, 멀버 ν•¨μˆ˜μ˜ μΈν„°νŽ˜μ΄μŠ€(μ„ μ–Έ)λ§Œμ„ νŒŒμƒ ν΄λž˜μŠ€μ— 상속받고 싢을 λ•Œ..

Tutorials/C++ : Advanced 2022. 10. 25. 16:27
Effective C++ | ν•­λͺ© 32 : public 상속 λͺ¨ν˜•μ€ λ°˜λ“œμ‹œ "is-a(...λŠ” ...의 일쒅이닀)"λ₯Ό λ”°λ₯΄λ„둝 λ§Œλ“€μž

C++ ν”„λ‘œκ·Έλž˜λ¨Έμ˜ ν•„λ…μ„œμ΄μž 바이블인, 슀콧 λ§ˆμ΄μ–΄μŠ€μ˜ Modern Effective C++ λ₯Ό 읽고 κΈ°μ–΅ν•  λ‚΄μš©μ„ μš”μ•½ν•˜κ³  μžˆμŠ΅λ‹ˆλ‹€. κΌ­ μ½μ–΄λ³΄μ‹œκΈΈ μΆ”μ²œλ“œλ¦½λ‹ˆλ‹€! ν•­λͺ© 32 : public 상속 λͺ¨ν˜•μ€ λ°˜λ“œμ‹œ "is-a(...λŠ” ...의 일쒅이닀)"λ₯Ό λ”°λ₯΄λ„둝 λ§Œλ“€μž 핡심 : public μƒμ†μ˜ μ˜λ―ΈλŠ” "is-a(...λŠ” ...의 일쒅)"이닀. κΈ°λ³Έ ν΄λž˜μŠ€μ— μ μš©λ˜λŠ” λͺ¨λ“  것듀이 νŒŒμƒ ν΄λž˜μŠ€μ— κ·ΈλŒ€λ‘œ μ μš©λ˜μ–΄μ•Ό ν•œλ‹€. μ™œλƒν•˜λ©΄ λͺ¨λ“  νŒŒμƒ 클래슀 κ°μ²΄λŠ” κΈ°λ³Έ 클래슀 객체의 일쒅이기 λ•Œλ¬Έμ΄λ‹€. μ–΄λ–€ Base ν΄λž˜μŠ€λ‘œλΆ€ν„° Derived ν΄λž˜μŠ€κ°€ public 상속을 λ°›μ•˜λ‹€λ©΄, Derived ν΄λž˜μŠ€λŠ” Base ν΄λž˜μŠ€λ³΄λ‹€ 더 νŠΉμˆ˜ν•œ κ°œλ…μ„ λ‚˜νƒ€λ‚΄κ²Œ λœλ‹€. μ‚¬μš©μ²˜κ°€ μ œν•œλœλ‹€κ³  봐도 μ’‹λ‹€. public 상속이 μ‹ κΈ°..

Tutorials/C++ : Advanced 2022. 10. 25. 16:26
Effective C++ | ν•­λͺ© 31 : 파일 μ‚¬μ΄μ˜ 컴파일 μ˜μ‘΄μ„±μ„ μ΅œλŒ€λ‘œ μ€„μ΄μž

C++ ν”„λ‘œκ·Έλž˜λ¨Έμ˜ ν•„λ…μ„œμ΄μž 바이블인, 슀콧 λ§ˆμ΄μ–΄μŠ€μ˜ Modern Effective C++ λ₯Ό 읽고 κΈ°μ–΅ν•  λ‚΄μš©μ„ μš”μ•½ν•˜κ³  μžˆμŠ΅λ‹ˆλ‹€. κΌ­ μ½μ–΄λ³΄μ‹œκΈΈ μΆ”μ²œλ“œλ¦½λ‹ˆλ‹€! ν•­λͺ© 31 : 파일 μ‚¬μ΄μ˜ 컴파일 μ˜μ‘΄μ„±μ„ μ΅œλŒ€λ‘œ μ€„μ΄μž 핡심 : 1. 컴파일 μ˜μ‘΄μ„±μ„ μ΅œμ†Œν™”ν•˜λŠ” μž‘μ—…μ˜ 배경이 λ˜λŠ” κ°€μž₯ 기본적인 μ•„μ΄λ””μ–΄λŠ” 'μ •μ˜' λŒ€μ‹ μ— 'μ„ μ–Έ' 에 μ˜μ‘΄ν•˜κ²Œ λ§Œλ“€μžλŠ” 것이닀. 이 아이디어에 κΈ°λ°˜ν•œ 두 가지 μ ‘κ·Ό 방법은 ν•Έλ“€ ν΄λž˜μŠ€μ™€ μΈν„°νŽ˜μ΄μŠ€ ν΄λž˜μŠ€μ΄λ‹€. 2. 라이브러리 ν—€λ”λŠ” κ·Έ 자체둜 λͺ¨λ“  것을 κ°–μΆ”μ–΄μ•Ό ν•˜λ©° μ„ μ–ΈλΆ€λ§Œ κ°–κ³  μžˆλŠ” ν˜•νƒœμ—¬μ•Ό ν•œλ‹€. 이 κ·œμΉ™μ€ ν…œν”Œλ¦Ώμ΄ μ“°μ΄κ±°λ‚˜ 쓰이지 μ•Šκ±°λ‚˜ λ™μΌν•˜κ²Œ μ μš©ν•˜μž. C++ λŠ” μΈν„°νŽ˜μ΄μŠ€μ™€ κ΅¬ν˜„μ„ κΉ”λ”ν•˜κ²Œ λΆ„λ¦¬ν•˜λŠ” 일에 일가견이 μ—†λ‹€. μ˜ˆμ‹œλ₯Ό 보자. class Person {..

Tutorials/C++ : Advanced 2022. 10. 25. 16:26
Effective C++ | ν•­λͺ© 30 : 인라인 ν•¨μˆ˜λŠ” λ―Έμ£Όμ•Œκ³ μ£Όμ•Œ λ”°μ Έμ„œ 이해해 λ‘μž

C++ ν”„λ‘œκ·Έλž˜λ¨Έμ˜ ν•„λ…μ„œμ΄μž 바이블인, 슀콧 λ§ˆμ΄μ–΄μŠ€μ˜ Modern Effective C++ λ₯Ό 읽고 κΈ°μ–΅ν•  λ‚΄μš©μ„ μš”μ•½ν•˜κ³  μžˆμŠ΅λ‹ˆλ‹€. κΌ­ μ½μ–΄λ³΄μ‹œκΈΈ μΆ”μ²œλ“œλ¦½λ‹ˆλ‹€! ν•­λͺ© 30 : 인라인 ν•¨μˆ˜λŠ” λ―Έμ£Όμ•Œκ³ μ£Όμ•Œ λ”°μ Έμ„œ 이해해 λ‘μž 핡심 : 1. ν•¨μˆ˜ 인라인은 μž‘κ³ , 자주 ν˜ΈμΆœλ˜λŠ” ν•¨μˆ˜μ— λŒ€ν•΄μ„œλ§Œ ν•˜μž. μ΄λ ‡κ²Œ ν•˜λ©΄ 디버깅 및 라이브러리의 λ°”μ΄λ„ˆλ¦¬ μ—…κ·Έλ ˆμ΄λ“œκ°€ μš©μ΄ν•΄μ§€κ³ , 자칫 생길 수 μžˆλŠ” μ½”λ“œ λΆ€ν’€λ¦Ό ν˜„μƒμ΄ μ΅œμ†Œν™”λ˜λ©°, ν”„λ‘œκ·Έλž¨μ˜ 속λ ₯이 더 빨라질 수 μžˆλŠ” 여지가 졜고둜 λ§Žμ•„μ§„λ‹€. 2. ν•¨μˆ˜ ν…œν”Œλ¦Ώμ΄ λŒ€κ°œ 헀더 νŒŒμΌμ— λ“€μ–΄κ°„λ‹€λŠ” 일반적인 λΆ€λΆ„λ§Œ μƒκ°ν•΄μ„œ 이듀을 inline 으둜 μ„ μ–Έν•˜λ©΄ μ•ˆ λœλ‹€. 인라인 ν•¨μˆ˜λ₯Ό μ‚¬μš©ν•˜λ©΄ μ»΄νŒŒμΌλŸ¬κ°€ ν•¨μˆ˜ 본문에 λŒ€ν•΄ λ¬Έλ§₯별(context-specific) μ΅œμ ν™”λ₯Ό κ±ΈκΈ°κ°€ 용..

Tutorials/C++ : Advanced 2022. 10. 25. 16:26
Effective C++ | ν•­λͺ© 29 : μ˜ˆμ™Έ μ•ˆμ „μ„±μ΄ ν™•λ³΄λ˜λŠ” κ·Έλ‚  μœ„ν•΄ μ‹Έμš°κ³  또 μ‹Έμš°μž!

C++ ν”„λ‘œκ·Έλž˜λ¨Έμ˜ ν•„λ…μ„œμ΄μž 바이블인, 슀콧 λ§ˆμ΄μ–΄μŠ€μ˜ Modern Effective C++ λ₯Ό 읽고 κΈ°μ–΅ν•  λ‚΄μš©μ„ μš”μ•½ν•˜κ³  μžˆμŠ΅λ‹ˆλ‹€. κΌ­ μ½μ–΄λ³΄μ‹œκΈΈ μΆ”μ²œλ“œλ¦½λ‹ˆλ‹€! ν•­λͺ© 29 : μ˜ˆμ™Έ μ•ˆμ „μ„±μ΄ ν™•λ³΄λ˜λŠ” κ·Έλ‚  μœ„ν•΄ μ‹Έμš°κ³  또 μ‹Έμš°μž! 핡심 : 1. μ˜ˆμ™Έ μ•ˆμ „μ„±μ„ κ°–μΆ˜ ν•¨μˆ˜λŠ” μ‹€ν–‰ 쀑 μ˜ˆμ™Έκ°€ λ°œμƒλ˜λ”λΌλ„ μžμ›μ„ λˆ„μΆœμ‹œν‚€μ§€ μ•ŠμœΌλ©° 자료ꡬ쑰λ₯Ό λ”λŸ½νžŒ μ±„λ‘œ 내버렀 두지 μ•ŠλŠ”λ‹€. 이런 ν•¨μˆ˜λ“€μ΄ μ œκ³΅ν•  수 μžˆλŠ” μ˜ˆμ™Έ μ•ˆμ „μ„± 보μž₯은 기본적인 보μž₯, κ°•λ ₯ν•œ 보μž₯, μ˜ˆμ™Έ κΈˆμ§€ 보μž₯이 μžˆλ‹€. 2. κ°•λ ₯ν•œ μ˜ˆμ™Έ μ•ˆμ „μ„± 보μž₯은 '볡사-ν›„-λ§žλ°”κΎΈκΈ°' 방법을 μ¨μ„œ κ΅¬ν˜„ν•  수 μžˆμ§€λ§Œ, λͺ¨λ“  ν•¨μˆ˜μ— λŒ€ν•΄ κ°•λ ₯ν•œ 보μž₯이 μ‹€μš©μ μΈ 것은 μ•„λ‹ˆλ‹€. 3. μ–΄λ–€ ν•¨μˆ˜κ°€ μ œκ³΅ν•˜λŠ” μ˜ˆμ™Έ μ•ˆμ „μ„± 보μž₯의 κ°•λ„λŠ”, κ·Έ ν•¨μˆ˜κ°€ λ‚΄λΆ€μ μœΌλ‘œ ν˜ΈμΆœν•˜λŠ” ν•¨μˆ˜λ“€..

Tutorials/C++ : Advanced 2022. 10. 25. 16:25
Effective C++ | ν•­λͺ© 28 : λ‚΄λΆ€μ—μ„œ μ‚¬μš©ν•˜λŠ” 객체에 λŒ€ν•œ 'ν•Έλ“€'을 λ°˜ν™˜ν•˜λŠ” μ½”λ“œλŠ” λ˜λ„λ‘ ν”Όν•˜μž

C++ ν”„λ‘œκ·Έλž˜λ¨Έμ˜ ν•„λ…μ„œμ΄μž 바이블인, 슀콧 λ§ˆμ΄μ–΄μŠ€μ˜ Modern Effective C++ λ₯Ό 읽고 κΈ°μ–΅ν•  λ‚΄μš©μ„ μš”μ•½ν•˜κ³  μžˆμŠ΅λ‹ˆλ‹€. κΌ­ μ½μ–΄λ³΄μ‹œκΈΈ μΆ”μ²œλ“œλ¦½λ‹ˆλ‹€! ν•­λͺ© 28 : λ‚΄λΆ€μ—μ„œ μ‚¬μš©ν•˜λŠ” 객체에 λŒ€ν•œ 'ν•Έλ“€'을 λ°˜ν™˜ν•˜λŠ” μ½”λ“œλŠ” λ˜λ„λ‘ ν”Όν•˜μž 핡심 : μ–΄λ–€ 객체의 λ‚΄λΆ€μš”μ†Œμ— λŒ€ν•œ ν•Έλ“€(참쑰자, 포인터, 반볡자) λ₯Ό λ°˜ν™˜ν•˜λŠ” 것은 λ˜λ„λ‘ ν”Όν•˜μž. μΊ‘μŠν™” 정도λ₯Ό 높이고, μƒμˆ˜ 멀버 ν•¨μˆ˜κ°€ 객체의 μƒμˆ˜μ„±μ„ μœ μ§€ν•œ μ±„λ‘œ λ™μž‘ν•  수 μžˆλ„λ‘ ν•˜λ©°, 무효참쑰 핸듀이 μƒκΈ°λŠ” 경우λ₯Ό μ΅œμ†Œν™”ν•  수 μžˆλ‹€. 클래슀 λ‚΄λΆ€μ˜ 데이터λ₯Ό 참쑰자둜 λ°˜ν™˜ν•˜λŠ” 것은 μ£Όμ˜ν•΄μ•Ό ν•œλ‹€. λ‹€μŒ μ˜ˆμ‹œλ₯Ό 보자. clas Point { public: Point(int x, int y); ... void setX(int newVal); voi..

Tutorials/C++ : Advanced 2022. 10. 25. 16:24
Effective C++ | ν•­λͺ© 27 : μΊμŠ€νŒ…μ€ μ ˆμ•½, 또 μ ˆμ•½! μžŠμ§€ 말자

C++ ν”„λ‘œκ·Έλž˜λ¨Έμ˜ ν•„λ…μ„œμ΄μž 바이블인, 슀콧 λ§ˆμ΄μ–΄μŠ€μ˜ Modern Effective C++ λ₯Ό 읽고 κΈ°μ–΅ν•  λ‚΄μš©μ„ μš”μ•½ν•˜κ³  μžˆμŠ΅λ‹ˆλ‹€. κΌ­ μ½μ–΄λ³΄μ‹œκΈΈ μΆ”μ²œλ“œλ¦½λ‹ˆλ‹€! ν•­λͺ© 27 : μΊμŠ€νŒ…μ€ μ ˆμ•½, 또 μ ˆμ•½! μžŠμ§€ 말자 핡심 : 1. λ‹€λ₯Έ 방법이 κ°€λŠ₯ν•˜λ‹€λ©΄ μΊμŠ€νŒ…μ€ ν”Όν•˜μž. 특히 μˆ˜ν–‰ μ„±λŠ₯에 λ―Όκ°ν•œ μ½”λ“œμ—μ„œ dynamic_cast λŠ” λͺ‡ 번이고 λ‹€μ‹œ μƒκ°ν•˜μž. 섀계 쀑에 μΊμŠ€νŒ…μ΄ ν•„μš”ν•΄μ‘Œλ‹€λ©΄, μΊμŠ€νŒ…μ„ 쓰지 μ•ŠλŠ” λ‹€λ₯Έ 방법을 μ‹œλ„ν•΄ 보자. 2. μΊμŠ€νŒ…μ΄ μ–΄μ©” 수 없이 ν•„μš”ν•˜λ‹€λ©΄, ν•¨μˆ˜ μ•ˆμ— 숨길 수 μžˆλ„λ‘ ν•΄ 보자. μ΄λ ‡κ²Œ ν•˜λ©΄ μ΅œμ†Œν•œ μ‚¬μš©μžλŠ” μžμ‹ μ˜ μ½”λ“œμ— μΊμŠ€νŒ…μ„ 넣지 μ•Šκ³  이 ν•¨μˆ˜λ₯Ό ν˜ΈμΆœν•  수 있게 λœλ‹€. 3. κ΅¬ν˜• μŠ€νƒ€μΌμ˜ 캐슀트λ₯Ό μ“°λ €κ±°λ“  C++ μŠ€νƒ€μΌμ˜ 캐슀트λ₯Ό μ„ ν˜Έν•˜μž. λ°œκ²¬ν•˜κΈ°λ„ 쉽고, 섀계..

Tutorials/C++ : Advanced 2022. 10. 25. 16:18
Effective C++ | ν•­λͺ© 25 : μ˜ˆμ™Έλ₯Ό λ˜μ§€μ§€ μ•ŠλŠ” swap 에 λŒ€ν•œ 지원도 생각해 보자

C++ ν”„λ‘œκ·Έλž˜λ¨Έμ˜ ν•„λ…μ„œμ΄μž 바이블인, 슀콧 λ§ˆμ΄μ–΄μŠ€μ˜ Modern Effective C++ λ₯Ό 읽고 κΈ°μ–΅ν•  λ‚΄μš©μ„ μš”μ•½ν•˜κ³  μžˆμŠ΅λ‹ˆλ‹€. κΌ­ μ½μ–΄λ³΄μ‹œκΈΈ μΆ”μ²œλ“œλ¦½λ‹ˆλ‹€! ν•­λͺ© 25 : μ˜ˆμ™Έλ₯Ό λ˜μ§€μ§€ μ•ŠλŠ” swap 에 λŒ€ν•œ 지원도 생각해 보자 핡심 : 1. std::swap 이 μ‚¬μš©μž μ •μ˜ νƒ€μž…μ— λŒ€ν•΄ 느리게 λ™μž‘ν•  여지가 μžˆλ‹€λ©΄ swap 멀버 ν•¨μˆ˜λ₯Ό μ œκ³΅ν•˜μž. 이 멀버 swap 은 μ˜ˆμ™Έλ₯Ό λ˜μ§€μ§€ μ•Šλ„λ‘ λ§Œλ“€μž. 2. 멀버 swap 을 μ œκ³΅ν–ˆμœΌλ©΄, 이 멀버λ₯Ό ν˜ΈμΆœν•˜λŠ” 비멀버 swap 도 μ œκ³΅ν•˜μž. 클래슀(ν…œν”Œλ¦Ώμ΄ μ•„λ‹Œ)에 λŒ€ν•΄μ„œλŠ”, std::swap 도 νŠΉμˆ˜ν™”ν•΄ λ‘μž. 3. μ‚¬μš©μž μž…μž₯μ—μ„œ swap 을 ν˜ΈμΆœν•  λ•ŒλŠ”, std::swap 에 λŒ€ν•œ using 선언을 λ„£μ–΄ μ€€ 후에 λ„€μž„μŠ€νŽ˜μ΄μŠ€ ν•œμ • 없이 swap 을..

Tutorials/C++ : Advanced 2022. 10. 25. 16:15