Zgodnie z ogólną zasadą, że to kwestia lokalne konwencje. Większość z miejsc, w których widziałem, nie używa this->
, chyba że jest to konieczne, i to jest konwencja, którą również lubię, ale słyszałem o ludziach, którzy wolą korzystać z nich systematycznie.
Istnieją dwa przypadki, gdy jest to konieczne. Po pierwsze, jeśli ukryłeś nazwę o tej samej nazwie w zasięgu lokalnym; jeśli np. masz członka o nazwie toto
, a także nazwiesz swój argument funkcji toto
. Wiele konwencji kodowania oznacza albo element, albo argines, aby uniknąć tego przypadku, na przykład, , np. wszystkie nazwy elementów zaczynają się od my
lub m_
lub nazwa parametru rozpocznie się od the
.
Innym przypadkiem jest to, że this->
może być użyty w szablonie, aby nazwa zależała od nazwy . Jest to istotne, jeśli klasa szablonu dziedziczy po typie zależnym od i chcesz uzyskać dostęp do elementu bazy, np.:
template <typename T>
class Toto : public T
{
public:
int f()
{
return this->g();
}
};
Bez this->
tu g()
byłaby nazwa non-zależne, a kompilator będzie szukać go w kontekście definicji szablonu, nie biorąc pod uwagę klasę bazową.
Ostrożnie: jeśli 'vin' jest funkcją wirtualną, wtedy' this-> vin() 'oraz' MyUtopicClass :: vin() 'są różne. –
aschepler