2012.07.23 22:26

간혹 C++나 여러 언어로 작성된 프로그램들을 보다보면

 

A->Run(); 따위?의 문장을 볼 수 있다.

 

쉽게 말하면 A가 포인터이기 때문에 위와 같이 '->' 기호를 사용하여 함수를 불러오는 것이다.

 

만약 A가 포인터가 아니었다면,

 

A.Run(); 과 같이 사용했을 것이다.

 

예를 들어

 

class MyClass

{

public int myValue;

...

public void myMethod()

{

...

}

}

과 같은 클래스가 있고...

 

MyClass classA, *classB; 와 같이 선언하였다면...

 

classA가 myMethod()를 호출 할 때에는

classA.myMethod()가 될 것이고...

그 안의 변수를 호출할 때에는

classA.myValue; 가 되었을 것이다.

 

그런데 classB는 앞에 *이 붙어있어 실제 객체가 들어있는게 아니라 그 객체를 가리키는 주소값 밖에 가지고 있지 않다.

 

그래서 직접

classB.myMethod(); 이런 식으로 호출하는게 안되니까

classB->myMethod(); 이런 식으로 불러내는 것이다.

그래서 변수도 classB->myValue=123; 이런식으로 쓰면

 

원래는 classA.myValue=123; 이런 걸로 인식하면 된다...

 

즉 classB->myValue=123;은

 

classB를 myValue에 넣고 그게 123 뭐 이런게 아니라...

classB.myValue = 123; 인데 포인터라서 저렇게 쓴것이다.

 

요약하자면 포인터에서 .을 못쓰니까 .대신 쓰는게 -> 라고 보면 될듯...

 

p.s. 걍 이해하고 있는대로 적었는데 잘못된게 있으려나...

저작자 표시 비영리 변경 금지
신고

'Programming > C++' 카테고리의 다른 글

C++ 에서 '->'의 의미  (0) 2012.07.23
Posted by Ianuarias