코딩을 하다보면 어떤 클래스들이 공통적으로 가지는 속성이 있을 때, 이런 생각을 하게 됩니다. 따로 정의, 선언할 필요 없이 다른 클래스 내의 속성, 행동들을 물려받아 쓰면 어떨까. 이러면 코드의 양도 줄어들고 여러가지 이점을 누릴 수 있을 것입니다. 객체지향의 특성 중 하나인 상속에 대해 알아보겠습니다.
..
class 부모클래스명{
// ..
};
class 자식클래스명 : 접근제한자 부모클래스명 {
// ..
};
..
상속은 위와 같이 쓰입니다. 접근제한자는 public, protected, private이 있습니다.
public을 사용하면 부모클래스의 접근제한자 그대로,
protected를 사용하면 부모클래스의 public을 protected로 바꾸고 나머지는 그대로,
private은 전부 private으로 상속받습니다.
이렇게 상속받은 멤버 변수와 함수들을 자식클래스로 만든 객체에서 사용할 수 있습니다.
또한 생성자 소멸자 호출 순서를 보기위해 아래와 같이 코드를 작성해보면,
#include <iostream>
class Parent {
public:
Parent()
{
std::cout << "부모클래스 생성자" << std::endl;
}
~Parent()
{
std::cout << "부모클래스 소멸자" << std::endl;
}
};
class Child : public Parent{
public:
Child()
{
std::cout << "자식클래스 생성자" << std::endl;
}
~Child()
{
std::cout << "자식클래스 소멸자" << std::endl;
}
};
int main()
{
Child c;
return 0;
}
출력은 이렇게 나옵니다.
생성자는 부모->자식, 소멸자는 자식->부모 순으로 호출되는 것을 볼 수 있습니다.
다음에는 상속을 쓰는 진짜 이유인 가상 함수, 다형성 등에 대해 알아보겠습니다.
'C++' 카테고리의 다른 글
가상 함수(virtual 키워드)와 다형성 (0) | 2020.10.29 |
---|---|
업 캐스팅과 다운 캐스팅 (0) | 2020.10.29 |
C++ 에서의 캐스팅(형변환) (0) | 2020.10.27 |
연산자 오버로딩(전위/후위 증감 연산자) (0) | 2020.10.27 |
malloc과 new의 차이 (0) | 2020.10.24 |