到目前为止,据我了解,在定义指针变量时,我们在 RAM 中为该变量分配空间。
int *p;
将在 RAM 中定义一个空间。然后我们使用 `&variable' 为该指针分配一个内存地址。
我正在查看一个示例:*this vs this in C++ 代码是:
#include <iostream>
class Foo
{
public:
Foo()
{
this->value = 0;
}
Foo get_copy()
{
return *this;
}
Foo& get_copy_as_reference()
{
return *this;
}
Foo* get_pointer()
{
return this;
}
void increment()
{
this->value++;
}
void print_value()
{
std::cout << this->value << std::endl;
}
private:
int value;
};
int main()
{
Foo foo;
foo.increment();
foo.print_value();
foo.get_copy().increment();
foo.print_value();
foo.get_copy_as_reference().increment();
foo.print_value();
foo.get_pointer()->increment();
foo.print_value();
return 0;
}
我不明白将*
操作员放在前面Foo* get_copy()
的目的是什么Foo* get_pointer()
。如果我在返回not时*
从函数中删除了,为什么会出现错误?Foo*
this
*this
编辑:
另外,为什么是:
foo.get_copy().increment();
foo.print_value();
产生 1 而不是 2?