상속, 복사생성자

상속과 복사 생성자

  • 상속: 자식 클래스는 부모 클래스의 멤버 변수를 상속받아 사용할 수 있습니다.

  • 복사 생성자: 복사 생성자는 객체를 다른 객체로 복사할 때 호출됩니다. C++에서 기본적으로 제공되는 복사 생성자는 얕은 복사를 수행합니다. 하지만 경우에 따라 깊은 복사가 필요할 때 복사 생성자를 직접 정의해야 합니다.

실습 예제

Person 클래스를 기본 클래스로, Student 클래스는 Person을 상속받습니다. Person 클래스에는 이름과 나이를 저장하는 멤버가 있으며, Student 클래스는 Person을 상속받아 학번을 추가로 저장합니다. 또한, 복사 생성자를 사용하여 객체를 복사할 때 발생할 수 있는 문제를 해결합니다.

+--------------------+       +---------------------+
|      Person        |       |       Student       |
+--------------------+       +---------------------+
| - name: string     |<------| - studentId: string |
| - age: int         |       +---------------------+
+--------------------+       | + Student(name, age, studentId)|
| + Person(name, age)|       | + print()           |
| + print()          |       +---------------------+
+--------------------+   
        ^
        |
   상속 관계

Person 클래스:

  • name (string): 사람의 이름을 저장하는 멤버 변수.

  • age (int): 사람의 나이를 저장하는 멤버 변수.

  • Person(name, age) 생성자: 이름과 나이를 초기화하는 생성자.

  • print(): 사람의 이름과 나이를 출력하는 함수.

Student 클래스:

  • studentId (string): 학생의 학번을 저장하는 멤버 변수.

  • Student(name, age, studentId) 생성자: 부모 클래스의 생성자를 호출하고, 학번을 추가로 초기화.

  • print(): 부모 클래스의 print() 함수를 호출하고, 학번도 출력하는 함수.

상속 관계:

  • Student 클래스는 Person 클래스를 상속받으며, Student 객체는 Person 클래스의 멤버 변수와 메서드를 사용할 수 있습니다.

ch07ex03_Person.h

ch07ex03_Person.cpp

ch07ex03_Student.h

ch07ex03_Student.cpp

ch07ex03_main.cpp

Last updated