A a;
B b;
C c;
A()
: m_A(0)
{}
~A() {}
public:
B()
// 1
: A()
, m_B(0)
{}
public:
C()
: m_C(0)
, B()
class C : public B
{
public:
C()
// 3
: m_A(0) , m_B(0) , m_C(0)
{
// 1
m_A = 0; // m_A 는 A 클래스에서 protected
// 2
m_B = 0; // m_B 는 B 클래스에서 private
m_C = 0;
}
C()
: m_C(0)
, B()
{}
{}
};
public:
// 1
A()
: m_A(0)
{}
// 2
A(int _A)
: m_A(_A)
{}
// 3
A a1;
// 4
A a2();
// 5
A a1(10);
public:
B()
: A()
, m_B(0)
{}
B(int _A, int _B)
// 1
: A(_A)
, m_B(_B)
{}
B b1(10, 20);
C()
: m_C(0)
, B()
{}
C(int _A, int _B, int _C)
: B(_A, _B)
, m_C(_C)
{}
C c1(10, 20, 30);
// A클래스 내부
~A()
{
cout << "A Class Destruction" << endl;
}
// B클래스 내부
~B()
{
cout << "B Class Destruction" << endl;
// 1
//A::~A();
}
// C클래스 내부
~C()
{
cout << "C Class Destruction" << endl;
// 1
//B::~B();
}
#include <iostream>
using std::cout;
using std::endl;
class A
{
protected:
int m_A;
public:
void SetA(int _a) { m_A = _a; }
public:
A()
: m_A(0)
{}
A(int _A)
: m_A(_A)
{
}
~A()
{
cout << "A Class Destruction" << endl;
}
};
class B : public A
{
private:
int m_B;
public:
void SetB(int _b)
{
m_B = _b;
}
int GetB()
{
return m_B;
}
public:
B()
: m_B(0)
{}
B(int _A, int _B)
: A(_A)
, m_B(_B)
{}
~B()
{
cout << "B Class Destruction" << endl;
}
};
class C : public B
{
private:
int m_C;
public:
void SetC(int _c)
{
m_A = _c;
//m_B = _c;
m_C = _c;
}
public:
//C()
// : m_A(0), m_B(0), m_C(0) // 초기화시에는 해당 클래스 맴버만 가능
//{
// m_A = 0; // m_A 는 A 클래스에서 protected
// m_B = 0; // m_B 는 B 클래스에서 private
// m_C = 0;
//}
C()
: m_C(0)
{}
C(int _A, int _B, int _C)
: B(_A, _B)
, m_C(_C)
{}
~C()
{
cout << "C Class Destruction" << endl;
B::~B();
}
};
int main()
{
A a; // 4 바이트
B b; // 8 바이트
C c; // 12 바이트
a.SetA(10);
b.SetA(20);
c.SetA(30);
b.SetB(10);
c.SetB(10);
c.SetC(10);
A a1(10);
B b1(10, 20);
C c1(10, 20, 30);
int size = 0;
size = sizeof(a1);
size = sizeof(b1);
size = sizeof(c1);
return 0;
}
1차 24.01.12
2차 24.01.15
3차 24.01.16
4차 24.01.17
5차 24.01.18