b = a-> b在一类列表中意味着什么?

时间:2013-06-13 01:18:22

标签: c++ list

在一类列表中,b = a-> b表示什么?

我正在阅读的示例是列表中的析构函数,并且在“while”循环中它具有此操作。

Clistint::~Clistint(){ 
  Clist *actual, *next; 
  if(head!=NULL){ 
    actual=head; 
    while(actual!=NULL){ 
      next=actual->next; 
      delete actual; 
      actual=next; 
    } 
  } 
}

3 个答案:

答案 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的本地范围变量,它被赋予结构ba的值。没有看到完整的代码,就很难说更多。

答案 2 :(得分:0)

首先,=->是C ++语言的基本内置运算符。它们是从C继承而来的。这些运算符的含义可以在任何有关C或C ++的书中找到。

其次,在C ++中,=->都是可重载的运算符,这意味着在不知道b = a->b是什么以及a的情况下无法确定b的确切含义。 {1}}是。