-
[C++] 포인터를 통해 객체의 멤버에 접근프로그래밍/C & C++ 2024. 7. 1. 18:05728x90반응형
포인터를 통해 객체의 멤버에 접근하는 방법을 설명하겠습니다. 포인터를 사용하면 객체의 주소를 통해 해당 객체의 멤버 변수와 멤버 함수에 접근할 수 있습니다.
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 - 포인터를 통해 객체의 멤버에 접근할 때는