gpt4 book ai didi

与当前对象相关的 C++ 指针和地址说明

转载 作者:行者123 更新时间:2023-11-30 02:55:56 26 4
gpt4 key购买 nike

据我所知,在定义指针变量时,我们是在 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()做。如果我从 Foo* 函数中删除 * 而返回 this 而不是 *this 为什么会出现错误?

编辑:

另外,为什么是:

foo.get_copy().increment();
foo.print_value();

产生 1 而不是 2?

最佳答案

I don't understand what the purpose of putting the * operator in front Foo* get_copy() and Foo* get_pointer() does

Foo* get_pointer()

Foo* 是一个指向 Foo 对象的指针

this 也是一个指针,隐式绑定(bind)到成员函数的调用对象。这就是为什么这些函数的返回类型是 Foo* 而不是 Foo 的原因。

关于与当前对象相关的 C++ 指针和地址说明,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16048361/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com