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