2011-08-01 29 views
17

Java'da şu nesneyi yaparak yapabilirsiniz: this.x = x. Bunu C++'da nasıl yaparsınız?C++ Java'ya eşdeğer bu

Bu kod örneklerinin her birinin Shape adlı bir sınıfın parçası olduğunu varsayalım.

Java:

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

C++:

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

aynı daha popüler sözdizimi kullanılarak

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

ya, sadece çünkü onun farklı bir indirection operatörü kullandığımız bir işaretçi: 'this->' – Cechner

+0

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

+0

Genellikle üyelere erişen çoğu işlem için buna 'gerek duymazsınız. Açıkça 'bu' kullanımı oldukça durumsaldır (örn., Işaretçiden-üye işlevini çağırırken). –

cevap

24

aynı kelime: this

Tek fark bir gösterici, yani -> operatörünü kullanmak gerekir:

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

İlgili değil, fakat Stroustrup’un bir yeri C++’daki bir işaretçiyi "büyük olasılıkla bir hata" olduğunu hatırladığını hatırlıyorum. – jahhaj

+4

Bu tam olarak doğru değil. bir işaretçi olarak bu 'referanslar'; Daha önce icat edilmiş referanslar vardı, bu “bu” bir referans olurdu. – MSalters

3

C++ eşdeğer this olduğu; Yani, anahtar kelime aynıdır.

+0

Ve bu bir işaretçidir, bu yüzden bu 'x' dir. – pyroscope

+1

'->' Unutmayın, muhtemelen OP'nin ne eksik olduğu. – Joe

5

C++ eşdeğer this olduğunu, ancak birkaç farklılıklar vardır.

Bu, söz konusu nesnenin bir işaretçisi değil, bir referanstır; Bu nedenle, alanlara ya da yöntemlere erişmeden önce işaretçi atlatma operatörleri kullanmalısınız.

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