반응형
객체 포인터
C언어에서 포인터 선언과 동일하게 객체에 대한 포인터 변수를 선언하고 이 포인터 변수를 통해 객체의 멤버 변수를 읽고 값을 쓰거나 멤버 함수를 호출할 수 있다.
객체 포인터 선언
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | class Circle { private: int radius; public: Circle(); Circle(int r); double getArea(); }; Circle donut; double d = donut.getArea(); Circle *p; p = &donut; d = p->getArea(); | cs |
객체 주소 지정 방법
1 2 3 | 1. p = &donut; 2. Circle* p = &conut; | cs |
객체 멤버 접근 방법
1 2 3 | 1. d = donut.getArea(); 2. d = p->getArea(); 3. d = (*p).getArea(); | cs |
여기서 초기화 되지 않은 객체 포인터를 이용하면 null pointer assignment 오류가 발생한다.
아래는 오류가 발생하는 코드 이다.
1 2 | Circle *p; p->getArea(); | cs |
객체 포인터 선언 및 활용 예제
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 | #include <iostream> using namespace std; class Circle { private: int radius; public: Circle() { radius = 1; } Circle(int r) { radius = r; } double getArea(); }; double Circle::getArea() { return 3.14*radius*radius; } int main() { Circle donut; Circle pizza(30); // 객체 이름으로 멤버 접근 cout << donut.getArea() << endl; // 객체 포인터로 멤버 접근 Circle *p; p = &donut; cout << p->getArea() << endl; cout << (*p).getArea() << endl; p = &pizza; cout << p->getArea() << endl; cout << (*p).getArea() << endl; return 0; } | cs |
실행 결과
반응형
'Programming > C/C++' 카테고리의 다른 글
C++/CPPRESTSDK_VisualStudio에 설치 및 라이브러리 관리 (0) | 2017.10.25 |
---|---|
C++/객체 배열 (0) | 2017.10.23 |
C++/헤더 파일과 cpp 파일로 분리 예시 (0) | 2017.10.23 |
C++/C++ 프로그램 작성법 (0) | 2017.10.23 |
C++/C++ 구조체 (0) | 2017.10.23 |