C++ Chapter 11.3 : Derived Class 들의 생성과 초기화
카테고리: Cpp
태그: Cpp Programming
인프런에 있는 홍정모 교수님의 홍정모의 따라 하며 배우는 C++ 강의를 듣고 정리한 필기입니다. 😀
🌜 [홍정모의 따라 하며 배우는 C++]강의 들으러 가기!
chapter 11. 상속 : Derived Class 들의 생성과 초기화
🔔 크기 비교
Mother
클래스를Child
클래스가 상속 받을 때, 두 타입의 객체 크기 비교
- 주석 참고
class Mother
{
int m_i;
};
class Child
{
int m_d;
};
int main()
{
cout << sizeof(Mother) << endl; // 👉 4 출력 (int)
cout << sizeof(Child) << endl; // 👉 8 출력 (int + int) 물려받은 m_i과 자신만의 m_d
}
class Mother
{
int m_i;
};
class Child
{
double m_d;
};
int main()
{
cout << sizeof(Mother) << endl; // 👉 4 출력 (int)
cout << sizeof(Child) << endl; // 👉 16 출력 (int + double) 물려받은 m_i과 자신만의 m_d
}
Padding
때문에 4 + 8 = 12 가 아닌 16 이 나온다.
🔔 생성자 호출은 부모부터, 소멸자 호출은 자식부터
#include <iostream>
using namespace std;
class A
{
public:
A(int a)
{
cout << "Constructor A"<< endl;
}
~A()
{
cout << "Destructor A " << endl;
}
};
class B : public A
{
public:
B(int a, double b)
: A(a)
{
cout << "Constructor B" << endl;
}
~B()
{
cout << "Destructor B " << endl;
}
};
class C : public B
{
public:
C(int a, double b, char c)
: B(a, b)
{
cout << "Constructor C" << endl;
}
~C()
{
cout << "Destructor C " << endl;
}
};
int main()
{
C c(1024, 3.14, 'a');
return 0;
}
💎출력💎
Constructor A
Constructor B
Constructor C
Destructor C
Destructor B
Destructor A
생성자
는 조상일 수록 먼저 호출되고소멸자
는 손자일 수록 먼저 호출된다.
🌜 개인 공부 기록용 블로그입니다. 오류나 틀린 부분이 있을 경우
언제든지 댓글 혹은 메일로 지적해주시면 감사하겠습니다! 😄
댓글 남기기