这是我正在使用的代码,有什么问题吗?第7行是否正确地将长度10分配给了立方体对象,或者它是否会返回一个编译器错误。因为我的理解是箭头操作符将把c2指向c1,但是c1仍然是一个指针,所以不需要-〉-〉来到达包含函数的立方体对象吗?
jgwigjjp1#
Cube *c2 = c1;
这并没有将c2指向c1,这将由下面的第一行完成,第二行显示了如何使用它(这并没有通过神秘的->->操作符完成):
c2
c1
->->
Cube **c2 = &c1; (*c2)->setLength(10);
原始赋值语句获取c1的值(指向所分配的Cube的指针)并将该值放入c2,因此c1和c2现在都指向同一个Cube对象。这就好比:
Cube
int answer = 42; int otherAnswer = answer;
因为它将otherAnswer设置为42,它没有使它 * 指向 * answer。原始代码包含指针的事实并没有改变这一特定方面。
otherAnswer
42
answer
hvvq6cgz2#
c2是直接用指针c1的值初始化的。所以c1 == c2 . c2不是双指针Cube **。你可以像使用c1一样使用c2。但是,请记住不要在运行delete c1之后使用c2。
c1 == c2
Cube **
delete c1
2条答案
按热度按时间jgwigjjp1#
这并没有将
c2
指向c1
,这将由下面的第一行完成,第二行显示了如何使用它(这并没有通过神秘的->->
操作符完成):原始赋值语句获取
c1
的值(指向所分配的Cube
的指针)并将该值放入c2
,因此c1
和c2
现在都指向同一个Cube
对象。这就好比:
因为它将
otherAnswer
设置为42
,它没有使它 * 指向 *answer
。原始代码包含指针的事实并没有改变这一特定方面。hvvq6cgz2#
c2
是直接用指针c1
的值初始化的。所以c1 == c2
.c2
不是双指针Cube **
。你可以像使用c1
一样使用c2
。但是,请记住不要在运行
delete c1
之后使用c2
。