게시판 즐겨찾기
편집
드래그 앤 드롭으로
즐겨찾기 아이콘 위치 수정이 가능합니다.
[ㅄㄱ]구글갓에게 물어도 잘 모르겠네요...
게시물ID : programmer_9202짧은주소 복사하기
작성자 : 사쿠라다네네
추천 : 0
조회수 : 664회
댓글수 : 25개
등록시간 : 2015/04/08 06:02:41
옵션
  • 본인삭제금지
struct containing self type pointer 
how to work struct including self type pointer 
영어 단어도 부실해서 검색도 잘 못했지만요 ㅠㅠ 



class T {
public:
T* pT;
int data;
}


이게 어떻게 가능한지가 궁금합니다. 

T*는 T가 구현된 후에 구현될 수 있는 것 아닌가요? 

일단 포인터의 크기는 가리키는 타입과 무관하게 일정하기 때문에 전체 크기와 나머지 변수의 상대적 주소값이나 타입을 결정하는 데 문제가 없다고는 배웠는데... 

근데 아무리 그래도 이해가 안가는 점이 있습니다. 

포인터에는 주소값 뿐만 아니라 가리키는 대상의 구조(?)에 대한 정보도 함께 있어야 하는 것 아닙니까? 

class A {
public:
int a;
int b;
double d;
}


가 있다면 
A* pA; 
는 (*pA).b 와 같이 식별자에 따라 정확히 그것을 타입을 알고 가져와주는 게 가능하지 않습니까.


그러니까 만약 위의 class T를 예로 들자면 

T* 가 만들어지기 위해서는 T 내부의 모든 타입이 결정되어야 하죠. 

근데 T 내부에 T*는 T가 만들어지기 전에는 결정날 수 없는 타입 아닙니까? 




내부적으로는

class T {
public:
void* pT;
int typeOfPT;
int data;
}

와 같이 구현되어있고 

컴파일러에 모든 포인터를 관리하는 관리자가 있어서 

T t;

t.pT 를 사용하면

typeOfPT 값에 따라 자동으로 T*로 캐스트해주는 겁니까? 
전체 추천리스트 보기
새로운 댓글이 없습니다.
새로운 댓글 확인하기
글쓰기
◀뒤로가기
PC버전
맨위로▲
공지 운영 자료창고 청소년보호