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

상속3

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