11.4 유도된 클래스들의 생성과 초기화
#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;
}