范围解析 :: vs this ->

Jef*_*uss 5 c++ oop this

我试图用 C++ 理解 OOP 中的指针和作用域。之间是否有任何区别:

class Class 
{  
public:
    void setVal (int value) { 
        this -> value = value;
    }
    int getVal();
private:
     int value;
};
Run Code Online (Sandbox Code Playgroud)

和这个:

class Class 
{  
public:
    void setVal (int value) {
        Class::value = value;  
    }  
    int getVal();
private:
    int value;
};
Run Code Online (Sandbox Code Playgroud)

Lig*_*ica 2

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

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

意思是“请给我一些我正在与你交谈的特定物体this->一部分”;意思是“请给我那个叫做 的东西”。Class::valueClass::value

此逻辑不太适用于成员函数,因为指定Class::您自己会关闭虚拟调度。所以this->foo()不等于this->Class::foo()