프로그래밍 언어/C++

C++ 간단하게 사용할 수 있는 포인터 해제 매크로 함수

ShovelingLife 2022. 8. 29. 01:19
#include <iostream>

using namespace std;

#define SAFETY_CHECK(ptr) \
{ \
if (ptr == nullptr) \
{ \
cout << "Reference is NULL" << endl; \
return false; \
} \
else \
cout << "Reference is not NULL" << endl; \
return true; \
} \

template<typename T>
bool IsSafe(T* ptr) { SAFETY_CHECK(ptr); }

#define SAFE_DELETE(ptr) if(IsSafe(ptr)) delete ptr

class Test
{
public:
    Test()
    {
        cout << "생성자 호출" << endl;
    }

    ~Test()
    {
        cout << "소멸자 호출" << endl;
    }
};

int main()
{
    Test* p = new Test();
    SAFE_DELETE(p);
    return 0;
}