상속 객체가 생성될 때 생성자가 실행되기 전에 초기화 리스트가 실행된다.
초기화 리스트는 객체의 기반 클래스의 생성자를 호출한다.
Coord(int ax, int ay) { puts("Coord 생성자");x=ax;y=ay; }
Point(int ax, int ay, char ach) : Coord(ax,ay) { puts("Point 생성자");ch=ach; }
Circle(int ax, int ay, char ach, int aRad) : Point(ax,ay,ach) { puts("Circle 생성자");Rad=aRad; }

Circle을 생성할 때 위와 같이 기반 클래스로 한 단계씩 올라가서 상속받은 멤버를 초기화하고 상속받은 멤버 초기화가 끝나면 자신의 멤버를 초기화 한다.
void main()
{
puts("==== Point 생성전 ====");
Point P(10,10,'@');
puts("==== Circle 생성전 ====");
Circle C(40,10,'*',8);
P.Show();
C.Show();
}
/*
==== Point 생성전 ====
Coord 생성자
Point 생성자
==== Circle 생성전 ====
Coord 생성자
Point 생성자
Circle 생성자*/
'C++' 카테고리의 다른 글
| [C++] 포함, private 상속, public 상속 (0) | 2022.01.05 |
|---|---|
| [C++] 다중 상속과 virtual 클래스 (0) | 2022.01.05 |
| [C++] 복사 생성자 (0) | 2022.01.04 |
| [C++] 연산자 오버로딩 (0) | 2022.01.04 |
| [C++] 프렌드 friend (0) | 2022.01.04 |