상속

김대익·2022년 3월 4일

상속이 쓰이는 대표적인 이유로 4가지가 있다

Animal클래스를 상속받는 Cat, Dog, Human를 만들 수 있고
이 클래스들은 Animal을 상속받았다는 관계를 갖게 된다.

또한 코드 재사용성도 좋아지는데, Animal에서 sleep()이라는 함수를 정의했다면
이 sleep()함수는 상속받은 Cat, Dog, Human클래스에서도 수정없이 사용이 가능하다.

일관적인 클래스 인터페이스를 만들수 있게해주는데
대표적으로 abstract/interface class로 정의하게되고
세부적으로 pure/virtual function으로 이를 구현한다.

또한 dynamic function binding을 위해 상속을 사용하기도 하는데
이는 virtual function/table로 구현한다.


간단한 상속 예제


Animal 클래스를 상속한 Human 클래스의 object인 nocope는 driveCar(), sleep()함수를 모두 가지므로

빌드하면 모두 리턴한다.


클래스를 상속받는데는

  • public
  • private
  • protected
    3가지 방법이 있다.

public, protected으로 받으면 똑같이 public, protected context를 받아 멤버 변수에 접근이 가능하지만
private으로 받게되면 public, private, protected모두 private로 받아 derived class에서 멤버 변수에 접근이 불가능하다.


위 그림에서 Base::pri에 접근하는 부분에서 에러가 생긴다.

0개의 댓글