почему не нужно использовать это ключевое слово для указателя? - PullRequest
0 голосов
/ 29 января 2019

я делал связанный список и немного запутался в классе узла

class node 
{
public: 
    int data;  
    node*next;  
    node(int data){
        this->data=data;
        next =NULL;
    }
} 

, поэтому здесь мой вопрос, почему нет необходимости использовать ключевое слово this для указателя next, ятакже видели это в классе деревьев, где мы просто пишем left=NULL и right=NULL, а не this->left=NULL и this->right=NULL почему это так?

1 Ответ

0 голосов
/ 29 января 2019

Вот как работает язык.Это не имеет никакого отношения к переменной, являющейся указателем.Неквалифицированный идентификатор внутри класса будет найден в области видимости класса.Вы захотите использовать this, когда поиск подберет другой символ, например параметр или локальную переменную.

struct X
{
    int a;
    int b;
    int c;

    void foo(int b)
    {
         int c;

         a;       // data member X::a
         this->a; // same
         X::a;    // same

         b;       // parameter b
         this->b; // data member X::b
         X::b;    // data member X::b    

         c;       // local variable X::foo::c
         this->c; // data member X::c
         X::c;    // data member X::c    
    }
};
...