[c++] 구조체와 클래스의 포인터 멤버

C++에서 구조체와 클래스는 서로 다른 멤버 변수와 멤버 함수를 정의할 수 있는데, 이러한 차이점은 구조체의 모든 멤버가 기본적으로 public이지만, 클래스의 멤버는 기본적으로 private이다.

이러한 구조체와 클래스의 멤버를 가리키는 경우, 포인터를 사용하여 멤버에 접근해야 한다.

구조체의 포인터 멤버

구조체와 관련된 포인터를 정의하고 멤버에 접근하는 예제를 보자.

#include <iostream>

struct Point {
    int x;
    int y;
};

int main() {
    Point p1 = {1, 2};
    Point *ptr = &p1;

    std::cout << "x: " << ptr->x << ", y: " << ptr->y << std::endl;

    return 0;
}

위의 예제에서 ptrPoint 구조체를 가리키는 포인터이며 -> 기호를 사용하여 멤버에 접근한다.

클래스의 포인터 멤버

클래스의 멤버를 가리키는 포인터는 클래스의 인스턴스를 생성한 후 -> 연산자를 사용하여 접근한다.

#include <iostream>

class Point {
public:
    int x;
    int y;
};

int main() {
    Point p1;
    Point *ptr = &p1;

    ptr->x = 1;
    ptr->y = 2;

    std::cout << "x: " << ptr->x << ", y: " << ptr->y << std::endl;

    return 0;
}

위의 예제에서 ptrPoint 클래스를 가리키는 포인터이며, -> 연산자를 사용하여 클래스 멤버에 접근한다.

포인터를 사용하여 구조체와 클래스의 멤버에 접근하는 방법을 익히고, 해당 자료 구조에 대한 이해를 높이는 것이 중요하다.

이러한 포인터를 사용한 접근 방식은 동적 메모리 할당 및 객체 지향 프로그래밍에서 매우 유용하게 활용된다.

결론

구조체와 클래스의 포인터 멤버는 각각 해당 자료구조의 인스턴스를 가리키는 포인터로, -> 연산자를 사용하여 멤버에 접근할 수 있다. 이를 통해 동적 메모리 할당 및 객체 지향 프로그래밍에서 유용하게 활용할 수 있다.

자료구조에 대한 이해를 높이고, 포인터를 이용한 멤버 변수 및 함수에 대한 접근 방법을 숙지하는 것이 중요하다.

참고 자료