C++ Chapter 11.3 : Derived Class 들의 생성과 초기화

Date:     Updated:

카테고리:

태그:

인프런에 있는 홍정모 교수님의 홍정모의 따라 하며 배우는 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
}


🔔 생성자 호출은 부모부터, 소멸자 호출은 자식부터

#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

생성자는 조상일 수록 먼저 호출되고 소멸자는 손자일 수록 먼저 호출된다.



🌜 개인 공부 기록용 블로그입니다. 오류나 틀린 부분이 있을 경우 
언제든지 댓글 혹은 메일로 지적해주시면 감사하겠습니다! 😄

맨 위로 이동하기

Cpp 카테고리 내 다른 글 보러가기

댓글 남기기