λ³Έλ¬Έ λ°”λ‘œκ°€κΈ°

전체 κΈ€116

[C++] 16-3. 상속(Inheritance)κ΄€κ³„μ˜ μΈμŠ€ν„΄μŠ€ 생성, μ†Œλ©Έ 상속 κ΄€κ³„μ—μ„œ μƒμ„±λ˜λŠ” μΈμŠ€ν„΄μŠ€μ˜ μœ ν˜• 쀑 λ‹€ν˜•μ„±μ„ 기반으둜 λ§Œλ“€μ–΄μ§„ μΈμŠ€ν„΄μŠ€λŠ” 보톡 νŒŒμƒν΄λž˜μŠ€(Derived Class)λ₯Ό 톡해 κΈ°λ³Έ 클래슀(Base Class)λ₯Ό μ΄ˆκΈ°ν™”ν•©λ‹ˆλ‹€. 상속 κ΄€κ³„μ—μ„œ νŒŒμƒ 클래슀의 μΈμŠ€ν„΄μŠ€λ₯Ό λ§Œλ“ λ‹€ ν•˜λ”λΌλ„ λ‚΄λΆ€μ μœΌλ‘œλŠ” κΈ°λ³Έ 클래슀의 μΈμŠ€ν„΄μŠ€κΉŒμ§€ λ§Œλ“€μ–΄μ§€μ§€λ§Œ κΈ°λ³Έ 클래슀의 μƒμ„±μžλŠ” μž„μ˜λ‘œ ν˜ΈμΆœν•  수 μ—†κΈ° λ•Œλ¬Έμž…λ‹ˆλ‹€. λ°˜λŒ€λ‘œ μΈμŠ€ν„΄μŠ€μ˜ μ†Œλ©Έλ„ λ§ˆμ°¬κ°€μ§€μž…λ‹ˆλ‹€. νŒŒμƒ 클래슀만 μ†Œλ©Έν•˜κ³  κΈ°λ³Έ 클래슀의 μ˜μ—­μ΄ μ†Œλ©Έλ˜μ§€ μ•ŠμœΌλ©΄ λ©”λͺ¨λ¦¬ λˆ„μˆ˜(Memory Leak)κ°€ λ°œμƒν•  κ°€λŠ₯성이 있기 λ•Œλ¬Έμ— 이 λ˜ν•œ νŒŒμƒ ν΄λž˜μŠ€μ—μ„œ μ±…μž„μ Έμ•Ό ν•©λ‹ˆλ‹€. μƒμ„±μž(Contructor) κΈ°λ³Έ 클래슀(Base Class)의 μƒμ„±μž 호좜: νŒŒμƒ 클래슀(Derived Class)의 μƒμ„±μžκ°€ 호좜되기 전에 λ¨Όμ € κΈ°λ³Έ .. 2023. 6. 29.
[C++] 16-2. λ‹€ν˜•μ„±(Polymorphism)κ³Ό 좔상 클래슀(Abstract Class) 순수 가상 ν•¨μˆ˜(Pure Virtual Function)κ³Ό 좔상 클래슀(Abstract Class) 순수 가상 ν•¨μˆ˜(Pure Virtual Function)λŠ” ν•¨μˆ˜μ˜ μ •μ˜λ₯Ό 가지지 μ•Šκ³  μ„ μ–Έλ§Œ ν¬ν•¨ν•˜λŠ” 가상 ν•¨μˆ˜μž…λ‹ˆλ‹€. 순수 가상 ν•¨μˆ˜λŠ” = 0으둜 ν‘œμ‹œλ˜λ©°, νŒŒμƒ ν΄λž˜μŠ€μ—μ„œ λ°˜λ“œμ‹œ κ΅¬ν˜„λ˜μ–΄μ•Ό ν•©λ‹ˆλ‹€. 순수 가상 ν•¨μˆ˜λ₯Ό 가진 ν΄λž˜μŠ€λŠ” 좔상 클래슀둜 κ°„μ£Όλ˜μ–΄ 객체λ₯Ό 직접 생성할 수 μ—†μŠ΅λ‹ˆλ‹€. 좔상 ν΄λž˜μŠ€λŠ” 주둜 μΈν„°νŽ˜μ΄μŠ€λ₯Ό μ •μ˜ν•˜κΈ° μœ„ν•΄ μ‚¬μš©λ©λ‹ˆλ‹€. 순수 가상 ν•¨μˆ˜μ™€ 일반 가상 ν•¨μˆ˜μ˜ 차이점은 순수 가상 ν•¨μˆ˜λŠ” κΈ°λ³Έ ν΄λž˜μŠ€μ—μ„œ μ •μ˜λ₯Ό 가지지 μ•Šκ³ , νŒŒμƒ ν΄λž˜μŠ€μ—μ„œ κ΅¬ν˜„ν•΄μ•Ό ν•œλ‹€λŠ” μ μž…λ‹ˆλ‹€. 이λ₯Ό 톡해 λ‹€ν˜•μ„±μ„ μ§€μ›ν•˜λ©΄μ„œλ„ νŒŒμƒ ν΄λž˜μŠ€μ—μ„œ 각각의 독립적인 λ™μž‘μ„ κ΅¬ν˜„ν•  수 μžˆμŠ΅λ‹ˆλ‹€. 가상 ν•¨μˆ˜μ™€ 순수 가상 함.. 2023. 6. 24.
[C++] 16-1. 상속(Inheritance)κ³Ό 가상 ν•¨μˆ˜(Virtual Function) 이번 ν¬μŠ€νŒ…λΆ€ν„°λŠ” κ²½μ–΄μ²΄λ‘œ 글을 μ“°κ² μ”λ‹ˆλ‹€. μ—¬νƒœκΉŒμ§€ ν‰μ–΄μ²΄λ‘œ ν¬μŠ€νŒ…ν–ˆλŠ”λ°, λ”±λ”±ν•œ λŠλ‚Œμ΄ λ“€μ–΄μ„œ μ§€κΈˆλΆ€ν„°λŠ” μ’€ 더 μΉœμ ˆν•˜κ²Œ μžμ„Έν•˜κ²Œ μ„€λͺ…ν•˜λ €κ³  경어체λ₯Ό μ‚¬μš©ν•˜κ² μŠ΅λ‹ˆλ‹€! 상속(Inheritance) 객체 지ν–₯의 4λŒ€ 원칙(μΊ‘μŠν™”, 좔상화, 상속, λ‹€ν˜•μ„±) 쀑 상속 그리고 λ‹€ν˜•μ„±μ„ 닀뀄보렀고 ν•©λ‹ˆλ‹€. 상속은 객체지ν–₯의 κ½ƒμ΄μž 핡심이라고도 ν•  수 μžˆμŠ΅λ‹ˆλ‹€. 클래슀 μžμ²΄λ§ŒμœΌλ‘œλ„ 객체끼리의 관계λ₯Ό ν‘œν˜„ν•œλ‹€λ©΄, 상속을 ν†΅ν•œ λ‹€ν˜•μ„±μ€ 객체 κ°„μ˜ 관계λ₯Ό λ”μš± ν’μ„±ν•˜κ³  μ‰½κ²Œ ν‘œν˜„ν•  수 μžˆλ„λ‘ ν•˜μ£ . 상속을 톡해 기쑴에 μ •μ˜λœ 클래슀λ₯Ό 기반으둜 μƒˆλ‘œμš΄ 클래슀λ₯Ό μ •μ˜ν•  수 있으며, κ³΅ν†΅λœ 것을 κ³΅μœ ν•˜κ³  ν™•μž₯ κ°€λŠ₯ν•˜λ„λ‘ λ§Œλ“€ 수 μžˆμŠ΅λ‹ˆλ‹€. 상속은 클래슀 κ°„μ˜ 관계λ₯Ό μ„€μ •ν•˜μ—¬ μ½”λ“œ μž¬μ‚¬μš©κ³Ό 계측적 ꡬ쑰λ₯Ό κ΅¬μΆ•ν•˜λŠ” 데 μ‚¬μš©λ©λ‹ˆ.. 2023. 6. 23.
[C++] 15. 클래슀(class)와 ꡬ쑰체(struct) # ꡬ쑰체(struct) ꡬ쑰체(struct)λŠ” κ΄€λ ¨λœ 데이터λ₯Ό λ¬Άμ–΄ ν‘œν˜„ν•˜κΈ° μœ„ν•œ μ‚¬μš©μž μ •μ˜ 데이터 ν˜•μ‹μž…λ‹ˆλ‹€. κ΅¬μ‘°μ²΄λŠ” 멀버 λ³€μˆ˜μ˜ μ§‘ν•©μœΌλ‘œ 이루어지며, 각 멀버 λ³€μˆ˜λŠ” λ‹€λ₯Έ 데이터 ν˜•μ‹μ„ κ°€μ§ˆ 수 μžˆμŠ΅λ‹ˆλ‹€. κ΅¬μ‘°μ²΄λŠ” ν΄λž˜μŠ€μ™€ μœ μ‚¬ν•˜μ§€λ§Œ ν΄λž˜μŠ€μ™€λŠ” λͺ‡ 가지 μ€‘μš”ν•œ 차이점이 μžˆμŠ΅λ‹ˆλ‹€. κ΅¬μ‘°μ²΄λŠ” 일반적으둜 κ΄€λ ¨λœ 데이터λ₯Ό κ·Έλ£Ήν™”ν•˜κΈ° μœ„ν•΄ μ‚¬μš©λ˜λ©°, νŠΉμ • λ™μž‘μ„ κ΅¬ν˜„ν•˜κΈ° μœ„ν•œ 멀버 ν•¨μˆ˜λ₯Ό κ°€μ§ˆ 수 μ—†μŠ΅λ‹ˆλ‹€. 사싀 C++μ—μ„œλŠ” 멀버 ν•¨μˆ˜λ₯Ό μ–Όλ§ˆλ“ μ§€ κ°€μ§ˆ μˆ˜λŠ” μžˆμ§€λ§Œ, 데이터λ₯Ό λ‹€λ£¨λŠ” ꡬ쑰체의 νŠΉμ„±μƒ λ§Žμ€ κΈ°λŠ₯을 ν•˜λŠ” ν•¨μˆ˜λŠ” μ •μ˜ν•˜μ§€ μ•ŠμŠ΅λ‹ˆλ‹€.(그럴 λ°”μ—” 클래슀λ₯Ό 써야 ν•©λ‹ˆλ‹€) 멀버 λ³€μˆ˜λŠ” 주둜 ꡬ쑰체 λ‚΄μ—μ„œ 직접 μ ‘κ·Όλ˜μ–΄ μ‚¬μš©λ©λ‹ˆλ‹€. λ˜ν•œ, ꡬ쑰체의 기본적인 κ°€μ‹œμ„±μ€ public으둜 μ„€μ •λ˜μ–΄ μžˆμŠ΅λ‹ˆλ‹€. 즉.. 2023. 6. 9.
[STL][functional] std::bind, std::function # std::bind, std::function std::bind ν•¨μˆ˜ ν…œν”Œλ¦Ώμ€ ν•¨μˆ˜λ‚˜ ν•¨μˆ˜ 객체λ₯Ό 더 μž‘μ€ 인자 리슀트둜 λ°”μΈλ”©ν•˜μ—¬ μƒˆλ‘œμš΄ ν•¨μˆ˜λ‚˜ ν•¨μˆ˜ 객체λ₯Ό μƒμ„±ν•œλ‹€. μ΄λŠ” 미리 μ§€μ •ν•œ 인자 κ°’μ΄λ‚˜ 인자 μœ„μΉ˜μ— 값을 κ³ μ •μ‹œν‚€λŠ” 데 μ‚¬μš©λœλ‹€. std::bindλ₯Ό μ‚¬μš©ν•˜λ©΄ 인자λ₯Ό 일뢀 κ³ μ •ν•˜κ±°λ‚˜ μˆœμ„œλ₯Ό λ³€κ²½ν•˜μ—¬ ν•¨μˆ˜ 호좜 μ‹œ μœ μ—°μ„±μ„ 높일 수 μžˆλ‹€. std::function은 ν•¨μˆ˜ 포인터와 λΉ„μŠ·ν•œ κ°œλ…μœΌλ‘œ, μ‹€ν–‰ κ°€λŠ₯ν•œ 객체λ₯Ό λ‚˜νƒ€λ‚΄λŠ” ν•¨μˆ˜ 객체(wrapper)이닀. λ‹€μ–‘ν•œ μ’…λ₯˜μ˜ ν•¨μˆ˜λ‚˜ ν•¨μˆ˜ 객체λ₯Ό μ €μž₯ν•˜κ³  ν˜ΈμΆœν•  수 있으며, 특히 λŸ°νƒ€μž„ μ‹œμ— λ‹€λ₯Έ ν•¨μˆ˜λ‚˜ ν•¨μˆ˜ 객체λ₯Ό ν• λ‹Ήν•˜μ—¬ μ‚¬μš©ν•  수 μžˆλ‹€. std::bind와 std::function은 μ„œλ‘œ ꢁ합이 잘 λ§žλŠ”λ‹€. 특히 ν•¨μˆ˜ν˜• ν”„λ‘œκ·Έλž˜λ°μ—μ„œ 강점을 보.. 2023. 6. 8.
[STL] utility : minmax, move, forward, swap # std::minmax std::minκ³Ό std::maxλŠ” 많이 μ¨λ΄€μ§€λ§Œ std::minmaxλŠ” 써보지 μ•Šμ•˜λ‹€. μ‚¬μš© 방법은 μ‹¬ν”Œν•˜λ‹€. std::minmaxλŠ” std::pairλ₯Ό λ°˜ν™˜ν•˜λŠ”λ°, 첫 λ²ˆμ§Έκ°€ μ΅œμ†Ÿκ°’, 두 λ²ˆμ§Έκ°€ μ΅œλŒ“κ°’μ΄λ‹€. min, max, minmax λͺ¨λ‘ λ””ν΄νŠΈ μ—°μ‚°μžλŠ” ' 2023. 6. 4.