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

λ‹€ν˜•μ„±2

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