간접참조를 메인함수에서 쓰이는 경우.
간접참조는 클래스 메소드 내에서 쓰는 걸로 알고 있다.
그러나 메인함수내에서도 사용이 가능하다. 단, 자료형이 클래스 포인터일 경우이다.
클래스 포인터 자료형을 가진 변수 area(객체) 가 클래스 객체 S를 참조함으로써 간접적으로 S의 멤버변수/함수 접근이 가능하며 접근을 위해 ' -> ' 간접참조 기호를 사용한다.
struct도 동일하다. 하기는 관련 코드이다.
#include<cstdio>
struct test
{
int a;
};
class Rect
{
public:
int w;
int h;
Rect() {};
Rect(int w, int h)
{
this->w = w;
this->h = h;
}
void setSpec(int w, int h)
{
this->w = w;
this->h = h;
}
int getArea()
{
return (w * h);
}
};
int main(void)
{
Rect* area;
Rect S(0, 0);
area = &S;
area->h = 2; //자료형이 클래스 포인터이면 main 에서도 -> 이게 되네. area는 S를 참조한다.
//그래서 area는 h를 S로 간접참조를 하고 있다. S가 h를 메인함수에서 간접참조할수는 없다. 직접참조만 한다. 이유는
//이유는 S가 간접참조할 대상이 없기 떄문이다.
printf("%d %d", area->h, S.h);
/*struct*/
test *t_ptr;
test t{ 3 };
t_ptr= &t; // t_ptr이 참조하는 대상이 t이다.
printf("%d %d", t_ptr->a, t.a); // ->를 사용하여 t에 간접접근, *t_ptr.a 가 아님
}
참고글
Pointer to Class in C++ - Simple Snippets
Pointer to Class in C++ - Simple Snippets
In this tutorial chapter we will study and understand the concept and Pointer to Class in C++ also known as
simplesnippets.tech
'C_C++' 카테고리의 다른 글
| 2차원 벡터 사용법 (0) | 2022.08.02 |
|---|---|
| 노트북 -노트 만들기 (0) | 2022.07.02 |
| vector 자료형에 pair, class pointer (0) | 2022.06.30 |
| 입력키 안보이게 하여 출력. (0) | 2022.04.13 |
| 벡터와 리스트 차이 (0) | 2022.04.10 |