[c++] 구조체와 클래스의 스마트 포인터

C++에서 구조체와 클래스는 메모리를 효율적으로 관리하기 위해 스마트 포인터를 사용할 수 있습니다. 이 포스트에서는 C++에서 구조체와 클래스를 포인터로 다룰 때 스마트 포인터가 어떻게 활용되는지에 대해 알아보겠습니다.

구조체와 클래스

C++에서 구조체와 클래스는 모두 멤버 변수와 멤버 함수를 가질 수 있는데, 클래스는 기본으로 private 접근 제어를 갖고 구조체는 기본으로 public 접근 제어를 갖는 것이 차이점입니다.

스마트 포인터

스마트 포인터는 메모리 누수를 방지하기 위해 동적으로 할당된 메모리를 안전하게 관리하는데 사용됩니다. std::unique_ptr은 오직 하나의 소유자만을 가지고 있을 때 사용되며, std::shared_ptr은 여러 소유자를 가질 수 있습니다.

구조체와 클래스의 스마트 포인터 사용 예시

아래는 구조체와 클래스의 스마트 포인터를 사용한 간단한 예시 코드입니다.

#include <iostream>
#include <memory>

struct Data {
    int value;
};

class Entity {
public:
    Entity(int value)
        : m_value(value) {}
    void print() {
        std::cout << "Value: " << m_value << std::endl;
    }

private:
    int m_value;
};

int main() {
    std::unique_ptr<Data> dataPtr(new Data{5});
    std::shared_ptr<Entity> entityPtr = std::make_shared<Entity>(10);
    entityPtr->print();
    return 0;
}

위의 코드에서는 구조체 Data와 클래스 Entity에 대한 스마트 포인터를 생성하고 사용하는 방법을 보여줍니다.

구조체와 클래스를 스마트 포인터로 다룸으로써 메모리 누수를 방지하고 안전하게 메모리를 관리할 수 있습니다.

이상으로 C++에서 구조체와 클래스의 스마트 포인터에 대한 간략한 소개였습니다.

참고 자료