范围解析:: vs this - >

时间:2015-02-28 23:04:31

标签: c++ oop this

我试图用C ++理解OOP中的指针和范围。之间是否存在任何差异:

class Class 
{  
public:
    void setVal (int value) { 
        this -> value = value;
    }
    int getVal();
private:
     int value;
};

和此:

class Class 
{  
public:
    void setVal (int value) {
        Class::value = value;  
    }  
    int getVal();
private:
    int value;
};

1 个答案:

答案 0 :(得分:2)

您发布的两段代码具有相同的行为,但不是因为A->BA::B 永远意味着同样的事情。

  • this->valuethis->Class::value的缩写,因为Class
  • 首先搜索了value
  • Class::valuethis->Class::value的缩写,因为在引用不带this->的成员变量时会假定当前对象。

this->表示“给我一些与特定对象有关的内容,我正在与您交谈,请”; Class::value表示“请给我一个名为Class::value的东西,请”。

这个逻辑并不完全适用于成员函数,因为自己指定Class::会关闭虚拟调度。因此this->foo()this->Class::foo()不同。