在一类列表中,b = a-> b表示什么?
我正在阅读的示例是列表中的析构函数,并且在“while”循环中它具有此操作。
Clistint::~Clistint(){
Clist *actual, *next;
if(head!=NULL){
actual=head;
while(actual!=NULL){
next=actual->next;
delete actual;
actual=next;
}
}
}
答案 0 :(得分:8)
编辑(现在您发布了代码)
next=actual->next;
delete actual;
actual=next;
这只会将actual
设置为actual.next
。你不能只做
actual=actual->next;
因为那会是内存泄漏(你永远不会删除旧的actual
)。此外,你不能只做
next=actual.next;
因为actual
是一个指针。因此,你必须得到它指向的东西,比如
next=(*actual).next;
但是->
运算符就是这样做的,所以你可以做到
next=actual->next; // means the same thing as "next=(*actual).next;"
(原帖)
与
相同b = (*a).b;
它会将局部变量b
设置为指针a
的{{1}}的值。例如:
b
答案 1 :(得分:2)
a
是指向结构或类的指针,a->b
是该结构或类中的某个东西,可能是一个变量。还有一个名为b
的本地范围变量,它被赋予结构b
中a
的值。没有看到完整的代码,就很难说更多。
答案 2 :(得分:0)
首先,=
和->
是C ++语言的基本内置运算符。它们是从C继承而来的。这些运算符的含义可以在任何有关C或C ++的书中找到。
其次,在C ++中,=
和->
都是可重载的运算符,这意味着在不知道b = a->b
是什么以及a
的情况下无法确定b
的确切含义。 {1}}是。