생성자란?
객체 생성 시 처음 한번 호출되는 함수다.
주로 값을 처음 초기화할 때 사용한다.
생성자는 클래스와 동일한 명칭을 가지며, 반환형이 없다.
Point.h
class Point
{
private:
int xpos;
int ypos;
public:
Point();
Point(int x, int y);
void ShowPoint();
};
Point.cpp
#include <iostream>
#include "Point.h"
Point::Point() {
xpos = 1;
ypos = 2;
}
Point::Point(int x, int y) {
xpos = x;
ypos = y;
}
void Point::ShowPoint() {
std::cout << "[" << xpos << ", " << ypos << "]" << std::endl;
}
main.cpp
#include "Point.h"
using namespace std;
int main() {
Point p1;
p1.ShowPoint();
Point p2(5, 5);
p2.ShowPoint();
// 동적할당
Point *ptr1 = new Point;
ptr1->ShowPoint();
Point *ptr2 = new Point();
ptr2->ShowPoint();
Point *ptr3 = new Point(10, 20);
ptr3->ShowPoint();
return 0;
}
결과
자동으로 생성자가 호출되어, 저장된 값이 출력되는 것을 볼 수 있다.
소멸자란?
객체 소멸 시 반드시 호출되는 함수이다.
주로 생성자에서 할당한 리소스의 소멸에 사용된다.
소멸자는 클래스의 이름 앞에 '~'가 붙은 형태의 이름을 가지며, 반환형이 없다.
Point.h
class Point
{
private:
int *xpos;
int *ypos;
public:
Point();
void ShowPoint();
~Point();
};
Point.cpp
#include <iostream>
#include "Point.h"
Point::Point() {
xpos = new int;
ypos = new int;
*xpos = 1;
*ypos = 2;
}
void Point::ShowPoint() {
std::cout << "[" << *xpos << ", " << *ypos << "]" << std::endl;
}
Point::~Point() {
delete xpos;
delete ypos;
}'C++' 카테고리의 다른 글
| [C++] 이러한 피연산자와 일치하는 "<<" 연산자가 없습니다. (0) | 2019.05.19 |
|---|---|
| [C++] 문자열, 입력 (0) | 2019.03.18 |
| [C++] 정보은닉과 캡슐화 (0) | 2019.03.13 |
| [C++] 객체지향 프로그래밍 (0) | 2019.03.13 |
| [C++] 클래스 (0) | 2019.03.08 |