- 상속에서 기초 클래스의 생성자와 유도 클래스의 생성자가 모두 호출된다.
- 소멸자 역시 기초 클래스, 유도 클래스 둘다 호출된다.
#include <iostream>
using namespace std;
class Parent
{
private:
int test1;
public:
Parent() : test1(1)
{
cout << "부모 생성" << endl;
}
~Parent()
{
cout << "부모 소멸" << endl;
}
};
class Child : public Parent
{
private:
int test2;
public:
Child():test2(1)
{
cout << "자식 생성 " << endl;
}
~Child()
{
cout << "자식 소멸 " <<endl;
}
};
int main()
{
Child *myobj = new Child;
delete myobj;
return 0;
}
실행 결과
부모 생성
자식 생성
자식 소멸
부모 소멸
계속하려면 아무 키나 누르십시오 . . .
[*] 위의 예제는 void 생성자가 호출되었지만 멤버변수를 초기화할 때는 멤버 이니셜라이져를 사용한다.
위에서 실행 결과를 보면 생성자의 호출순서와 소멸자의 호출순서가 반대인데 아래처럼 생성된 객체가 스택에 저장되기 때문이다.
#include <iostream>
using namespace std;
class Child
{
private:
int test;
public:
Child(int a):test(a) { cout << "자식 생성 ["<<test<<"]" << endl; }
~Child() { cout << "자식 소멸 [" <<test<<"]" <<endl; }
};
int main()
{
Child myobj1(1);
Child myobj2(2);
Child myobj3(3);
return 0;
}
실행 결과
자식 생성 [1]
자식 생성 [2]
자식 생성 [3]
자식 소멸 [3]
자식 소멸 [2]
자식 소멸 [1]
계속하려면 아무 키나 누르십시오 . . .
'Programming > C/C++' 카테고리의 다른 글
C++ 상속시의 접근제어 지시자 (0) | 2013.03.09 |
---|---|
복사 생성자 (0) | 2013.02.27 |
C++ 기초 [3] (0) | 2013.02.27 |
C++ 기초 [2] (0) | 2013.02.26 |
C++ 기초 [1] (0) | 2013.02.26 |