2011-08-01 81 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

一樣的,只是因爲它使用不同運營商的間接指針:'這個 - >' – Cechner

+0

這個 - > X = X; ... ......... – Joe

+0

對於訪問成員的大多數操作,通常不需要'this'。明確使用'this'是相當情況的(例如,當調用指向成員函數的指針時)。 –

回答

24

同一個詞:this

唯一不同的是它是一個指針,所以你需要使用->操作:

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

不相關,但我記得Stroustrup在某處說,把它作爲C++中的一個指針「可能是一個錯誤」。 – jahhaj

+4

這並不完全準確。作爲指針的'this'早於引用;參考文獻早已發明,那麼'this'就是一個參考。 – MSalters

3

的C++當量是this;也就是說,關鍵字是一樣的。

+0

它是一個指針,所以它是'this-> x'。 – pyroscope

+1

不要忘記' - >'這可能是OP缺失的。 – Joe

5

的C++相當於是this,但也有一些區別。

這是一個指向有問題的對象的指針,而不是引用;因此,在訪問字段或方法之前,您必須使用指針解引用操作符。

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

,或者使用更流行的語法

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