2011-08-01 5 views
17

Java에서는 다음을 수행하여 현재 오브젝트를 참조 할 수 있습니다. this.x = x. 어떻게 C++에서 이것을합니까?Java와 동등한 C++이

이러한 코드 예제는 각각 Shape 클래스의 일부라고 가정합니다.

자바 :

public void setX(int x) 
{ 
this.x = x; 
} 

C++ :

public: 
void setX(int x) 
{ 
//? 
} 
+4

같은 더 인기있는 구문을 사용하여

(*this).method(...) (*this).field 

또는, 단지 그것 때문에 다른 간접 연산자를 사용하여 포인터 :'this->' – Cechner

+0

this-> X = X; ... ......... – Joe

+0

회원에게 액세스하는 대부분의 작업에 보통 'this'가 필요하지 않습니다. 'this'를 명시 적으로 사용하는 것은 상황에 따라 상당히 다릅니다 (예 : 포인터를 구성원 함수로 호출 할 때). –

답변

24

같은 단어 : this

만 차이가 포인터입니다, 그래서 당신은 -> 연산자를 사용해야합니다

void setX(int x) 
{ 
    this->x = x; 
} 
+0

관련이 없지만 Stroustrup 어딘가에서이 포인터를 C++로 만드는 것이 '아마도 실수'라고 말한 것을 기억합니다. – jahhaj

+4

그건 완전히 정확하지 않습니다. 'this'는 포인터가 참조를 선행합니다; 참조가 먼저 만들어 졌다면 '이'가 참조 일 것입니다. – MSalters

3

는 C++ 당량 this이고; 즉, 키워드는 동일합니다.

+0

그리고 그것은 포인터이므로'this-> x'입니다. – pyroscope

+1

'->'그게 OP가 빠진 것임을 잊지 마라. – Joe

5

는 C++ 상응하는 this입니다,하지만 몇 가지 차이점이 있습니다.

이것은 참조 개체가 아닌 해당 개체에 대한 포인터입니다. 따라서 필드 나 메서드에 액세스하기 전에 포인터 역 참조 연산자를 사용해야합니다.

this->method(...) 
this->field