c – 范围解析:: vs 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;
};

最佳答案 您发布的两段代码具有相同的行为,但不是因为A-> B和A :: B的含义相同.

> this-> value is,sort of,short-this;> Class :: value,因为类Class首先被搜索为value
> Class :: value是this-> Class :: value的缩写,因为当引用没有this->的成员变量时会假定当前对象.

这个 – >意思是“请给我一些我正在与你交谈的特定对象的一部分,请”; Class :: value意味着“给我一个名为Class :: value的东西,请”.

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

点赞