2011-08-01 4 views
17

Trong Java, bạn có thể tham khảo đối tượng hiện tại bằng cách thực hiện: this.x = x. Làm thế nào để bạn làm điều này trong C + +?C++ tương đương với Java này

Giả sử rằng mỗi ví dụ mã này là một phần của một lớp được gọi là Shape.

Java:

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

C++:

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

cùng, chỉ vì nó là một con trỏ bạn sử dụng một nhà điều hành gián tiếp khác nhau: 'this->' – Cechner

+0

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

+0

Bạn thường không cần 'this' cho hầu hết các hoạt động truy cập thành viên. Việc sử dụng 'this' rõ ràng là khá tình huống (ví dụ: khi gọi hàm con trỏ tới thành viên). –

Trả lời

24

Same từ: this

Chỉ khác biệt là nó là một con trỏ, vì vậy bạn cần phải sử dụng -> điều hành:

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

Không liên quan, nhưng tôi nhớ Stroustrup ở đâu đó nói rằng làm cho một con trỏ trong C + + là 'có lẽ là một sai lầm'. – jahhaj

+4

Điều đó không hoàn toàn chính xác. 'this' như một con trỏ đặt trước các tham chiếu; đã có những tài liệu tham khảo được phát minh trước đó thì 'điều này' sẽ là một tham chiếu. – MSalters

3

C++ tương đương là this; có nghĩa là, từ khóa giống nhau.

+0

Và nó là một con trỏ, do đó, nó là 'this-> x'. – pyroscope

+1

Đừng quên '->' đó có thể là những gì mà OP bị thiếu. – Joe

5

C++ tương đương là this, nhưng có một vài sự khác biệt.

Đây là con trỏ tới đối tượng được đề cập, không phải là tham chiếu; vì vậy, bạn phải sử dụng toán tử dereferencing con trỏ trước khi truy cập các trường hoặc phương thức.

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

hay, sử dụng cú pháp phổ biến hơn

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