상속에서의 생성자와 소멸자

2019. 8. 12. 01:09PL/C++

자식 클래스의 인스턴스를 만들 때 가장 먼저 부모 클래스의 생성자가 호출된다. 이후에 자식 클래스의 생성자가 호출된다. 또한 자식 클래스의 수명이 다했을 때는 자식 클래스의 소멸자가 먼저 호출된 이후에 부모 클래스의 소멸자가 호출된다

 

#include <string>
#include <iostream>

using namespace std;

class Person {
private:
	string name;
public:
	Person(string name) : name(name) {
		cout << "부모 클래스 생성자 호출\n";
	}
	string getName() {
		return name;
	}
	void showName() {
		cout << "이름 : " << getName() << '\n';
	}
	~Person() {
		cout << "부모 클래스 소멸자 호출\n";
	}
};

class Student : Person {
private:
	int studentID;

public:
	Student(int studentID, string name) : Person(name) {
		this->studentID = studentID;
		cout << "자식 클래스 생성자 호출\n";
	}
	void show() {
		cout << "학생 번호 : " << studentID << '\n';
		cout << "학생 이름 : " << getName() << '\n';
	}
	~Student() {
		cout << "자식 클래스 소멸자 호출\n";
	}
};

int main(void) {
	Student a(13, "노을");
	a.show();
	return 0;
}