동일한 데이터를 가지고 있는 클래스에 다른 동작을 정의하기 위한 개념
이미 존재하는 클래스를 기반으로 새로운 클래스를 만들어 변형을 가함
부모 클래스에서 필요한 부분을 복사해 새로운 자식 클래스를 만드는 것은 완성된 캡슐화 클래스를 깨는 행위에 가깝기 때문에 상속이란 개념이 중요
장점 | 단점 |
개체의 실제 형에 대해 신경쓰지 않아도됨 | 가상 함수 사용 시 얼마간의 성능저하 발생 |
개체가 사용하는 코드와 각 자식 클래스의 특정 구현을 분리 | 과한 확장성 대비가 코드 작성에 어려움을 야기 |
실제 클래스형에 상관없이 하나의 함수를 이용해 모든 파생 클래스 참조를 가능하게 함 |
상속 클래스 다이어그램
[이미지]
상속된 클래스가 해당 함수를 오버라이드한 경우, virtual 키워드 여부에 따라 개체의 형을 이용해 호출될 함수를 결정
다형성 : 부모 클래스의 형 포인터를 이용해 하위 개체들을 참조할 수 있게 해주는 것
class Parent
{
};
class Child : public Parent
{
};
// 자식 개체 생성
Child * pChild = new Child;
// 부모형의 포인터 만들고 Child 개체를 가리킴
Parent* pParent = new Child;
Cast ~ static / dynamic의 소모 비용 (0) | 2024.03.25 |
---|---|
이동 생성자의 원리 w.우측값(rvalue) (0) | 2024.03.06 |
malloc/free 와 new/delete의 차이점 (1) | 2023.10.12 |
프로세스와 메모리 (0) | 2023.10.12 |
빌드(Build) / 컴파일(Compile) (0) | 2023.10.12 |