私の理解では、ポインタ変数を定義するとき、その変数のために 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();
2 ではなく 1 を生成しますか?