Como regla general, se trata de una cuestión de convenciones locales. La mayoría de los lugares que he visto no usan this->
excepto cuando sea necesario, y eso es la convención que prefiero también, pero he escuchado que las personas que prefieren lo usan sistemáticamente.
Hay dos casos cuando es necesario. El primero es si ha ocultado el nombre con el mismo nombre en alcance local; si, por ejemplo, tiene un miembro llamado toto
, y también ha llamado a su función argumento toto
. Muchas convenciones de codificación marcan el miembro o los argumentos para evitar este caso , p. todos los nombres de miembros comienzan con my
o m_
, o un nombre de parámetro comenzará con the
.
El otro caso es que this->
se puede utilizar en una plantilla para hacer que un nombre dependa. Esto es relevante si una clase de plantilla hereda de un tipo dependiente de y desea acceder a un miembro de la base, p.:
template <typename T>
class Toto : public T
{
public:
int f()
{
return this->g();
}
};
Sin la this->
aquí, g()
sería un nombre no dependiente, y el compilador búsquelo en el contexto de la definición de plantilla, sin tomar la clase base en la consideración.
Cuidado: si 'vin' es una función virtual, entonces' this-> vin() 'y' MyUtopicClass :: vin() 'son diferentes. –
aschepler