双箭头操作符在C++中是一个东西吗?

zc0qhyus  于 2023-02-06  发布在  其他
关注(0)|答案(2)|浏览(194)

这是我正在使用的代码,有什么问题吗?第7行是否正确地将长度10分配给了立方体对象,或者它是否会返回一个编译器错误。因为我的理解是箭头操作符将把c2指向c1,但是c1仍然是一个指针,所以不需要-〉-〉来到达包含函数的立方体对象吗?

jgwigjjp

jgwigjjp1#

Cube *c2 = c1;

这并没有将c2指向c1,这将由下面的第一行完成,第二行显示了如何使用它(这并没有通过神秘的->->操作符完成):

Cube **c2 = &c1;
(*c2)->setLength(10);

原始赋值语句获取c1的值(指向所分配的Cube的指针)并将该值放入c2,因此c1c2现在都指向同一个Cube对象。
这就好比:

int answer = 42;
int otherAnswer = answer;

因为它将otherAnswer设置为42,它没有使它 * 指向 * answer。原始代码包含指针的事实并没有改变这一特定方面。

hvvq6cgz

hvvq6cgz2#

c2是直接用指针c1的值初始化的。所以c1 == c2 . c2不是双指针Cube **。你可以像使用c1一样使用c2
但是,请记住不要在运行delete c1之后使用c2

相关问题