C++에서 상속이란 무엇인가요?
_____A1: 상속은 하나의 클래스(기반 클래스 또는 부모 클래스)의 특성과 기능을 다른 클래스(파생 클래스 또는 자식 클래스)가 물려받아 재사용하고 확장할 수 있게 하는 객체지향 프로그래밍의 핵심 개념입니다. 이를 통해 코드의 재사용성과 유지보수성을 높일 수 있습니다.
Q2: C++에서 상속을 어떻게 선언하나요?
A2: 기본 클래스 뒤에 콜론(:)과 접근 지정자(public, protected, private) 그리고 파생 클래스 이름을 써서 선언합니다. 예를 들어:
```cpp
class Base { /*...*/ };
class Derived : public Base { /*...*/ };
```
Q3: 상속에서 사용하는 접근 지정자는 어떤 의미인가요?
A3: 상속 시 붙이는 접근 지정자(public, protected, private)는 기반 클래스의 멤버들이 파생 클래스에서 어떻게 접근 가능한지를 결정합니다.
- `public` 상속: 기반 클래스의 public 멤버는 파생 클래스에서 public, protected 멤버는 protected로 유지됩니다.
- `protected` 상속: 기반 클래스의 public, protected 멤버 모두 파생 클래스에서 protected가 됩니다.
- `private` 상속: 기반 클래스의 public, protected 멤버 모두 파생 클래스에서 private가 됩니다.
Q4: 상속을 사용하는 이유는 무엇인가요?
A4:
- 코드 재사용: 이미 작성된 클래스를 기반으로 확장 가능
- 다형성 구현: 부모형 포인터나 참조로 자식 객체를 다룰 수 있음
- 유지보수 용이: 공통 기능을 기반 클래스에 집중
Q5: 다중 상속도 가능한가요?
A5: 네, C++는 여러 클래스를 동시에 상속할 수 있는 다중 상속을 지원합니다. 예:
```cpp
class Derived : public Base1, public Base2 { /*...*/ };
Q6: 상속과 관련된 키워드가 있나요?
A6:
- `virtual`: 가상 함수 선언에 사용하여 다형성을 구현
- `override`: 기반 클래스의 가상 함수를 재정의할 때 사용
- `final`: 상속 또는 가상 함수 재정의를 막을 때 사용
Q7: 생성자와 소멸자는 상속될 때 어떻게 동작하나요?
A7: 기반 클래스의 생성자는 파생 클래스 생성자 실행 전에 호출됩니다. 소멸자는 반대로 파생 클래스의 소멸자가 먼저 실행되고 그 다음에 기반 클래스 소멸자가 호출됩니다. 파생 클래스에서 명시적으로 기반 클래스 생성자를 호출할 수 있습니다.
Q8: private 멤버는 상속 후 어떻게 되나요?
A8: private 멤버는 파생 클래스에서 직접 접근할 수 없지만, public 또는 protected 멤버 함수를 통해 접근 가능하며, 상속 자체는 됩니다.
Q9: 왜 가상 상속(virtual inheritance)을 사용하나요?
A9: 다중 상속 시 공통의 기반 클래스를 중복 상속하는 문제(다이아몬드 문제)를 해결하기 위해 가상 상속을 사용합니다. 이를 통해 하나의 기반 클래스 인스턴스만 공유하게 됩니다.
Q10: 상속 시 주의할 점은 무엇인가요?
A10:
- 가상 소멸자를 사용하지 않으면, 기반 클래스 포인터로 파생 클래스 객체를 삭제할 때 자원 누수가 발생할 수 있음
- 다중 상속 시 이름 충돌에 주의
- 불필요한 복잡성 방지를 위해 상속 구조를 명확히 설계할 것
---
이와 같이 C++에서 상속은 객체지향 프로그래밍의 중요한 기능으로, 코드 재사용과 다형성 구현에 필수적입니다.
작성자:
정재훈 [비회원]
| 작성일자: 1년 전
2024-09-20 17:11:27
조회수: 171 | 댓글: 0 | 좋아요: 0 | 싫어요: 0
조회수: 171 | 댓글: 0 | 좋아요: 0 | 싫어요: 0
내용이 부정확하다면 싫어요를 클릭해주세요.