●생성자 상속
클래스를 상속한 전제에서 생성자도 상속이 가능하다.
생성자 상속은 따로 선언을 해줘야한다.
Ex)
B(int x, int y) : A(x+5)
C(int x, int y, int z) : B(x,y)
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
클래스를 상속한 전제에서 생성자도 상속이 가능하다.
생성자 상속은 따로 선언을 해줘야한다.
Ex)
B(int x, int y) : A(x+5)
C(int x, int y, int z) : B(x,y)
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
#include <iostream>
using namespace std;
class A {
int x;
public:
A() {
x = 0;
}
A(int x) {
this->x = x;
cout << x << endl;
}
};
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////using namespace std;
class A {
int x;
public:
A() {
x = 0;
}
A(int x) {
this->x = x;
cout << x << endl;
}
};
class B : public A {
int y;
public:
B(int x, int y) : A(x+5) // A 생성자 상속
{
this->y = y;
cout << y << endl;
}
};
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
class C : public B {
int m;
public:
C(int x, int y, int z) : B(x,y) //B 생성자 상속
{
m = x*y*z; cout << m << endl;
}
};
int main()
{
C c(3,5,2);
}
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
◆실행결과
8
5
30
5
30
※실행과정여기서 재밌는 점은 main 에서 C class의 객체 c를 생성 인자는 (3,5,2)를 받게 된다.m = 3*5*2, m 출력상속한 생성자를 실행 B(x,y) 호출,y = 2, y 출력B(x,y)가 상속한 생성자 A(x+5) 호출,x = 3 +5, x 출력
※헷갈리기 쉬운건 생성자 뒤에 아무것도 설정 안해준다면 기본 생성자가 호출된다.
ex code)
◆실행결과
※헷갈리기 쉬운건 생성자 뒤에 아무것도 설정 안해준다면 기본 생성자가 호출된다.
ex code)
class A{
A()
{
cout << "a 생성자" << endl;
}
A( int x )
{
cout << "a 생성자 : " << x << endl;
}
};
class B : class A{
B()
{
cout << "b 생성자" << endl;
}
B( int x )
{
cout << "b 생성자 : " << x << endl;
}
};
int main()
{
B b(1);
}
A()
{
cout << "a 생성자" << endl;
}
A( int x )
{
cout << "a 생성자 : " << x << endl;
}
};
class B : class A{
B()
{
cout << "b 생성자" << endl;
}
B( int x )
{
cout << "b 생성자 : " << x << endl;
}
};
int main()
{
B b(1);
}
◆실행결과
a 생성자
b 생성자 : 1
b 생성자 : 1
●상속 지정(public 상속, private 상속, protected 상속)
상속 선언시 public, private, protected의 3가지 중 하나 지정기본 클래스의 멤버의 접근 속성을 어떻게 계승할지 지정
public : 기본 클래스의 protected, public 멤버 속성을 그대로 계승
private는 private로 public은 public으로 계승
상속 선언시 public, private, protected의 3가지 중 하나 지정기본 클래스의 멤버의 접근 속성을 어떻게 계승할지 지정
public : 기본 클래스의 protected, public 멤버 속성을 그대로 계승
private는 private로 public은 public으로 계승