티스토리 뷰

C++

[C++] 9. 상속

JH_ 2021. 11. 23. 18:15

상속성

  • 이미 존재하는 클래스의 기본적인 특성을 물려받는 것
  • 원래 있던 프로그램에 새로운 특성을 추가하는 방식
  • 프로그램 개발시간 단축, 프로그램 재사용, 경비 절감 등의 효과가 있음

사용법

class 자식클래스명 : 상속접근제어 부모클래스명 { };

* 상속접근제어→ public, protected, private

 

기본클래스/ 상속접근제어 private protected public
private 상속X 상속X 상속X
protected private protected protected
public private protected public

1. public 상속접근제어

class Cat : public Animal

class Animal 
{
private:
	int a;
protected:
	char b;
public:
	double c;
};

class Cat 
{
private:
	char X;
protected:
	char y;
public:
	char z;
};

Animal을 상속받은 Cat 클래스 (public)

class Cat : public Animal
{
private:
	char x;
protected:
	//char b;
	char y;
public:
	//double c;
	char z;
};

2. private 상속접근제어

class Cat : private Animal

Animal을 상속받은 Cat 클래스 (private)

class Cat : public Animal
{
private:
	char x;
	//char b;
	//double c;
protected:
	char y;
public:
	char z;
};

3. protected 상속접근제어

class Cat : protected Animal

class Cat : public Animal
{
private:
	char x;
protected:
	//char b;
	//double c;
	char y;
public:
	char z;
};
  • 부모클래스에서 private 멤버 속성을 유지하면서 자식클래스가 접근하는 것이 가능하도록 하는 접근
  • protected의 멤버는 Cat 클래스와 Animal 클래스 말고 다른 외부에서 접근 불가

4. 상속에서 생성자와 소멸자

  • 부모 클래스, 자식 클래스 모두 생성자와 소멸자를 가질 수 있음
  • 그 경우 부모 생성자 / 자식 생성자 / 자식 소멸자 / 부모 소멸자 순서로 실행됨

5. 매개변수가 있는 생성자를 갖는 클래스의 상속

  • 자식클래스의 객체가 만들어지기 위해서 부모클래스의 생성자를 호출하는데 매개변수가 있어야 함
  • 부모클래스의 생성자가 매개변수를 갖고 있으면 매개변수 개수만큼 자식클래스에게 넘겨줘야 함
class A 
{
	int a;
public:
	A(int i) { a = i; }
};
class B : public A 
{
	int b;
public:
	B(int i, int j) : A(i) { b = j; }
};

'C++' 카테고리의 다른 글

[C++] 10. 오버라이딩 (가상함수)  (0) 2021.11.30
[C++] 8. 연산자 오버로딩  (0) 2021.11.16
[C++] 7. 함수 오버로딩과 디폴트 매개변수  (0) 2021.11.09
[C++] 5. const  (0) 2021.11.02
[C++] 4. 생성자와 소멸자  (0) 2021.10.19
댓글
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday