#include <iostream>
using namespace std;

class Mother
{
private:
  int m_i;
public:
  Mother(const int & i_in = 0)
    : m_i(i_in)
  {
  	cout << "Mother construction" << "\n";    
  }
};

class Child : public Mother
{
public:
  float m_d;
  
  Child()
    : Mother(1024), m_d(1.0f)
    {
      cout << "Child construction" << "\n";
    }
};

int main()
{
  Child c1;
  
  cout << sizeof(Mother) << "\n"; // 4, int 1개
  cout << sizeof(Child) << "\n"; // 8, Mother int 1개, float 1개
  
  return 0;
}
#include <iostream>
using namespace std;

class A
{
public:
  A(int a)
  {
    cout << "A: " << a << "\n";
  }
  ~A()
  {
    cout << "Destructor A" << "\n"
  }
};

class B : public A
{
public:
  B(int a, double b)
    : A(a)
  {
    cout << "B: " << b << "\n";
  }
  
  ~B()
  {
    cout << "Destructor B" << "\n"
  }
};

class C : public B
{
public:
  C(int a, double b, char c)
    : B(a, b)
  {
  	cout << "C: " << c << "\n";    
  }
  
  ~C()
  {
    cout << "Destructor C" << "\n"
  }
};


int main()
{
	C c(1024,3.14,'a'); // A -> B -> C 순으로 constructor 생성
  										// C -> B -> A 순으로 destructor 불러옴.
  
  return 0;
}