[C++] 생성자와 소멸자

목차

  1. 생성자와 소멸자란
  2. 생성자 정의와 소멸자 정의 with 코드

"생성자"란

객체를 생성할때 객체의 속성값들을 초기화 시켜주는 함수 입니다.
풀어서 얘기해보면 객체를 생성할때에 하나의 메소드를 통해 객체를 초기화 시켜 한번에 생성하기 위함입니다.

 

생성자는 정의해주지 않으면 컴파일러가 자동으로 디폴트 매개변수를 가진 생성자를 자동으로 정의해줍니다.

 

"소멸자"란

객체가 소멸될 때 자동으로 발생하는 발생하는 메소드 입니다.
-객체의 수명이 끝나면 실행되는 메소드로서 쓰지 않을 객체를 정리해줍니다.
-객체의 동적할당을 해제하기 위해 사용합니다. (메모리 누수를 막기 위함)

 

소멸자는 생성자와 메소드 정의는 비슷하며 ~를 붙여서 정의합니다.

 


생성자와 소멸자의 정의

#include <string>
#include <iostream>

using namespace std;

class student {
private:
	string name;
	int ID;
	int grade;

public:
	student(string name, int id, int Grade); //생성자
	~student(); //소멸자

	void setName(string name) {
		this->name = name;
	}
	void setID(int id) {
		this->ID = id;
	}
	void setGrade(int grade) {
		this->grade = grade;
	}



	void print_info() {
		cout << "이름: " << name <<"\n학번: "<<ID<<"\n학년: "<<grade <<"\n";
	}
};

 

Student 라는 이름을 지녔고 속성으로 name, ID, grade를 갖고있는 객체입니다.

위 코드에서 public함수에 반환값이 없고 매개변수를 갖고있는 "student()" 가 생성자입니다.

바로 밑에 "~stdunet()" 가 소멸자 입니다.

 

메소드를 정의했으니 이제 메소드를 구현해보겠습니다. 클래스 밖에

- 객체명::생성자메소드명 (생성자)

- 객체명::~생성자메소드명 (소멸자)

로 재정의 하여 안에 구현하시면 됩니다.

 

생성자구현

student::student(string name, int id, int Grade) {
	this->name = name;
	this->ID = id;
	this->grade = Grade;
}

student 속성값들을 받아온 매개변수를 this를 통한 포인터를 통해 가리키는 것입니다.

소멸자구현

student::~student() {
	cout << "이름: " << name << "/학번: " << ID << "/학년: " << grade << "소멸";
}

 

Main코드

#include "Student.h"

int main(void) {
	student student("홍길동",1234,3); //매개변수 생성자


	student.print_info(); //속성정보 호출
	return 0;
}

생성자의 매개변수 순서대로 "홍길동", 1234, 3을 넘겨서 객체를 생성한 것 입니다. 그 후 객체의 사용이 끝나면 자동으로 소멸자가 호출됩니다.

 

실행결과를 보시면

생성자의 매개변수 순서인 name, ID, grade값으로 각각 홍길동, 1234, 3이 넘어가서 print_info() 메소드를 통해 생성된 객체의 정보를 출력시켰고 그 후 객체의 사용이 끝나서 자동으로 소멸자가 호출되어 소멸자에 구현된 코드가 자동실행된 것을 보실 수 있습니다.

 

 

 

 

이상입니다.

'C++ > 객체지향' 카테고리의 다른 글

[C++] 상속과 다형성  (0) 2023.11.05
[C++] 접근지정자 - (public/private/protected)  (0) 2023.10.27
[C++] 객체 - 객체지향 첫시작  (1) 2023.10.23