ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [C++] 포인터를 통해 객체의 멤버에 접근
    프로그래밍/C & C++ 2024. 7. 1. 18:05
    728x90
    반응형

    포인터를 통해 객체의 멤버에 접근하는 방법을 설명하겠습니다. 포인터를 사용하면 객체의 주소를 통해 해당 객체의 멤버 변수와 멤버 함수에 접근할 수 있습니다.

    1. 기본적인 포인터를 통한 멤버 접근

    포인터를 통해 객체의 멤버에 접근하려면 -> 연산자를 사용합니다. 이는 포인터가 가리키는 객체의 멤버에 접근하기 위해 사용됩니다.

    예시:

    #include <iostream>
    
    class MyClass {
    public:
        int value;
        void sayHello() const {
            std::cout << "Hello from MyClass!" << std::endl;
        }
    };
    
    int main() {
        MyClass obj;
        obj.value = 42;
    
        MyClass* pObj = &obj; // pObj는 obj의 주소를 가리킴
    
        // 멤버 변수 접근
        std::cout << "Value: " << pObj->value << std::endl; // pObj를 통해 value에 접근
    
        // 멤버 함수 호출
        pObj->sayHello(); // pObj를 통해 sayHello() 호출
    
        return 0;
    }

    2. 동적 메모리 할당과 포인터를 통한 멤버 접근

    동적 메모리 할당을 통해 생성된 객체의 멤버에 접근할 때도 포인터를 사용합니다.

    예시:

    #include <iostream>
    
    class MyClass {
    public:
        int value;
        void sayHello() const {
            std::cout << "Hello from dynamically allocated MyClass!" << std::endl;
        }
    };
    
    int main() {
        MyClass* pObj = new MyClass; // 동적으로 MyClass 객체를 할당
        pObj->value = 42;
    
        // 멤버 변수 접근
        std::cout << "Value: " << pObj->value << std::endl; // pObj를 통해 value에 접근
    
        // 멤버 함수 호출
        pObj->sayHello(); // pObj를 통해 sayHello() 호출
    
        delete pObj; // 메모리 해제
    
        return 0;
    }

    3. 함수 인수로 포인터 사용

    포인터를 함수 인수로 사용하면, 함수가 호출될 때 객체의 주소를 전달하여 객체를 간접적으로 조작할 수 있습니다.

    예시:

    #include <iostream>
    
    class MyClass {
    public:
        int value;
        void sayHello() const {
            std::cout << "Hello from MyClass!" << std::endl;
        }
    };
    
    void printValue(MyClass* p) {
        if (p) {
            std::cout << "Value: " << p->value << std::endl;
            p->sayHello();
        }
    }
    
    int main() {
        MyClass obj;
        obj.value = 42;
    
        printValue(&obj); // 객체의 주소를 함수에 전달
    
        return 0;
    }

    요약

    • 포인터를 통해 객체의 멤버에 접근할 때는 -> 연산자를 사용합니다.
    • 동적 메모리 할당을 통해 생성된 객체의 멤버에도 동일한 방법으로 접근합니다.
    • 함수 인수로 객체 포인터를 전달하여 함수 내에서 객체를 조작할 수 있습니다.

    포인터를 통한 멤버 접근은 객체의 주소를 직접 조작할 수 있는 강력한 방법입니다.

    728x90
    반응형

    '프로그래밍 > C & C++' 카테고리의 다른 글

    [C++] 깊은 복사와 얕은 복사  (0) 2024.07.05
    [C++] 참조자를 통해 객체의 멤버에 접근  (0) 2024.07.02
    [C++] 스마트 포인터  (0) 2024.07.01
    [C++] std 뜻  (0) 2024.06.30
    [C++] 포인터와 참조자  (0) 2024.06.30
Designed by Tistory.