首页 > 解决方案 > 双箭头运算符是 C++ 中的一个东西吗?

问题描述

1   #include "Cube.h"
2   using cs225::Cube;
3 
4   int main() {
5   Cube *c1 = new Cube();
6   Cube *c2 = c1;
7   c2->setLength( 10 );
8   return 0;
9   }

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

标签: c++

解决方案


Cube *c2 = c1;

这并不指向c2c1将由下面的第一行完成,第二行显示如何使用它(它不是用神话->->运算符完成的):

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

原始赋值采用c1(指向Cube您分配的指针)的值并将该值放入c2. 因此c1c2now 都指向同一个Cube对象。

这就像:

int answer = 42;
int otherAnswer = answer;

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


推荐阅读