간접참조를 메인함수에서 쓰이는 경우.

 간접참조는 클래스 메소드 내에서 쓰는 걸로 알고 있다. 

그러나 메인함수내에서도 사용이 가능하다. 단, 자료형이 클래스 포인터일 경우이다. 

클래스 포인터 자료형을 가진 변수 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

+ Recent posts