티스토리 뷰

파라미터가 있는 생성자를 구현시, 개발자가 따로 파라미터가 없는 생성자도 구현해주어야 한다.

 

만약 자식의 클래스를 생성하게되면, 부모 -> 자식 순으로 초기화가 진행됨.

 

이렇게 진행하는 이유는 자식의 경우 부모 클래스의 것들을 가져다 쓸 수 있기 때문에 부모를 먼저 초기화하는것이 올바른 순서가 맞다.

 

class Child : public Mother
{
	public:
    double m_d;
    
    public:
    Child()
    	: Mother(1024), m_d(1.0) // 여기서 초기화하는 순서는 상관없다.
    {
.
.
.

 

class A
{
	public:
	A()
	{
		cout << "A Constructor" << endl;
	}
};

class B : public A
{
	public:
	B()
	{
		cout << "B Constructor" << endl;
	}
};

class C : public B
{
	public:
	C()
	{
		cout << "C Constructor" << endl;
	}
};

int main()
{	
	C c;
	
	return 0;
}

// A Constructor
// B Constructor
// C Constructor

 

 

11.4

 

Child 클래스를 할당할 때는 Mother 클래스의 데이터를 할당할만큼 데이터를 할당받음.

 

sizeof(child) = Child + Mother

 

int main()
{	
	Child c1;
	
	cout << sizeof(Child) << endl;
	cout << sizeof(Mother) << endl;
	
	return 0;
}

// Mother Constructor
// Child Constructor
// 24
// 4

 

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

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

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

int main()
{	
	C c(1024, 3.14, 'a');
	
	return 0;
}

// A: 1024
// B: 3.14
// C: a
// Destructor C
// Destructor B
// Destructor A
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2025/01   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
글 보관함