728x90
C++에서는 smart_pointer이라는 기법을 활용하여 더 쉽고 간단하게 동적배열 선언 등 다양한 방법으로 사용이 가능하다.
smart_pointer를 사용하면 new를 생성해주어도, 어떠한 함수 내부에서 종료되었을 때, 종료자가 스스로를 delete해주기 때문에, 따로 delete해줄 필요가 없어진다.
그럼으로 더 쉽고 간단하게 동적데이터 선언이 가능해진다. 다음은 코드 예시이다.
#include <iostream>
class ptr
{
int x;
int y;
public:
ptr(const int x, const int y) : x(x), y(y) {}
auto Get_x() -> const int { return x; }
auto Get_y() -> const int { return y; }
friend ptr& operator* (ptr os) {
return *os;
}
};
class Smart_ptr
{
ptr* ptrxy;
public:
Smart_ptr(const int x, const int y) { ptrxy = new ptr(x, y); }
friend std::ostream& operator<< (std::ostream& os, const Smart_ptr& sp) {
os << '[' << sp.ptrxy->Get_x() << ", " << sp.ptrxy->Get_y() << ']';
return os;
}
~Smart_ptr() { delete ptrxy; }
};
int main()
{
Smart_ptr ptr1(1, 2);
Smart_ptr ptr2(3, 4);
Smart_ptr ptr3(5, 6);
std::cout << ptr1 << ptr2 << ptr3 << std::endl;
return 0;
}
위 코드처럼, Smart_ptr을 선언하여, 어떠한 포인터 데이터를 동적으로 쉽게 선언해주고, 만약 main문이 아니라 다른 함수에서 종료되었을 지라도 return되면 자동으로 종료자가 선언되기 때문에 delete를 따로 신경써주지 않아도 된다.
728x90