El uso de la palabra clave “this” en C ++

Posible duplicado:
Es un uso excesivo de esto en C ++ un olor a código
¿Cuándo debería usar la palabra clave “this” en C ++?
¿Hay alguna razón para usar esto->

En C ++, ¿la palabra clave es omitida? Por ejemplo:

 Person::Person(int age) { _age = age; } 

Opuesto a:

 Person::Person(int age) { this->_age = age; } 

Sí, no es obligatorio y por lo general se omite. Sin embargo, podría ser necesario para acceder a las variables después de que hayan sido anuladas en el scope:

 Person::Person() { int age; this->age = 1; } 

También esto:

 Person::Person(int age) { _age = age; } 

Es un estilo bastante malo; si necesita un inicializador con el mismo nombre, use esta notación:

 Person::Person(int age) : age(age) { } 

Es la preferencia del progtwigdor. Personalmente, me encanta usar this ya que marca explícitamente los miembros del objeto. Por supuesto, el _ hace lo mismo (solo cuando sigues la convención)

this apunta al objeto en cuya función miembro se refiere, por lo que es opcional.

De cualquier manera funciona, pero muchos lugares tienen estándares de encoding que guiarán al desarrollador de una manera u otra. Si tal política no está en su lugar, simplemente sigue a tu corazón. Una cosa, sin embargo, REALMENTE ayuda a la legibilidad del código si lo usa. especialmente si no está siguiendo una convención de nomenclatura sobre nombres de variables de nivel de clase.

Para el caso de ejemplo anterior, por lo general se omite, sí. Sin embargo, de cualquier manera es sintácticamente correcto.

Sí. a menos que haya una ambigüedad.

También se usa a veces para evitar que algunos comstackdores optimicen la llamada a la función virtual.