0

在一类列表中,b=a->b 是什么意思?

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

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

3 回答 3

8

编辑(现在您发布了代码)

next=actual->next; 
delete actual; 
actual=next; 

那将设置actualactual.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为指针的ab。例如:

MyClass *a = new MyClass;
// do stuff with *a
int b;
b = a -> b; // gets the `b` value of `a` (assuming MyClass has a public int b)
            // same as "b = (*a).b;"
于 2013-06-13T01:19:33.933 回答
2

a是指向结构或类的指针,并且a->b是该结构或类中的某些东西,可能是变量。还有一个名为的局部范围变量b被分配了bin struct的值a。没有看到完整的代码很难说更多。

于 2013-06-13T01:21:12.577 回答
0

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

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

于 2013-06-13T01:30:19.467 回答