我试图用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()不同.