我试图用 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)
您发布的两段代码具有相同的行为,但并不是因为A->B并且A::B 意味着相同的事情。
this->value是 的缩写this->Class::value,因为Class首先搜索类valueClass::value是 的缩写this->Class::value,因为在引用不带 的成员变量时假定当前对象this->。意思是“请给我一些我正在与你交谈的特定物体的this->一部分”;意思是“请给我那个叫做 的东西”。Class::valueClass::value
此逻辑不太适用于成员函数,因为指定Class::您自己会关闭虚拟调度。所以this->foo()不等于this->Class::foo()。
| 归档时间: |
|
| 查看次数: |
536 次 |
| 最近记录: |