我试图用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;
};
答案 0 :(得分:2)
您发布的两段代码具有相同的行为,但不是因为A->B
和A::B
永远意味着同样的事情。
this->value
是this->Class::value
的缩写,因为Class
value
类
Class::value
是this->Class::value
的缩写,因为在引用不带this->
的成员变量时会假定当前对象。 this->
表示“给我一些与此特定对象有关的内容,我正在与您交谈,请”; Class::value
表示“请给我一个名为Class::value
的东西,请”。
这个逻辑并不完全适用于成员函数,因为自己指定Class::
会关闭虚拟调度。因此this->foo()
与this->Class::foo()
不同。