생성자란?
객체 생성 시 처음 한번 호출되는 함수다.
주로 값을 처음 초기화할 때 사용한다.
생성자는 클래스와 동일한 명칭을 가지며, 반환형이 없다.
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 |