【问题标题】:why it is not necessary to use this keyword for pointer?为什么不需要对指针使用这个关键字?
【发布时间】:2019-06-22 09:44:06
【问题描述】:

我在做链表,对一个节点的类有点困惑

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

所以我的问题是为什么没有必要为 next 指针使用 this 关键字,我也在树类中看到了这一点,我们只写了 left=NULLright=NULL 而不是 @987654326 @和this->right=NULL为什么会这样?

【问题讨论】:

  • 您的构造函数定义缺少花括号。在node(int data) 之后添加{,在next =NULL; 之后添加}
  • 这里的混淆是因为成员数据的名称data与参数名称data相同。如果名称不同,则在构造函数的第一行中不需要this->。这是this->使用,这是异常,而不是它的缺席。

标签: c++ class oop this-keyword


【解决方案1】:

这就是语言的工作方式。它与变量是指针无关。将在类的范围内搜索类内的非限定标识符。当查找将拾取另一个符号(如参数或局部变量)时,您将需要使用 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    
    }
};

【讨论】:

    猜你喜欢
    • 2014-06-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-05-20
    • 1970-01-01
    • 2010-09-14
    相关资源
    最近更新 更多