在一类列表中,b = a-> b是什么意思?
我正在阅读的示例是列表中的析构函数,并且在其"while"循环中它具有此操作.
Clistint::~Clistint(){
Clist *actual, *next;
if(head!=NULL){
actual=head;
while(actual!=NULL){
next=actual->next;
delete actual;
actual=next;
}
}
}
Run Code Online (Sandbox Code Playgroud)
编辑(现在你发布了你的代码)
next=actual->next;
delete actual;
actual=next;
Run Code Online (Sandbox Code Playgroud)
这将只设置actual到actual.next.你不能这样做
actual=actual->next;
Run Code Online (Sandbox Code Playgroud)
因为这将是内存泄漏(你永远不会删除旧的actual).此外,你不能只做
next=actual.next;
Run Code Online (Sandbox Code Playgroud)
因为actual是一个指针.因此,你必须得到它指向的东西,比如
next=(*actual).next;
Run Code Online (Sandbox Code Playgroud)
但->操作员就是这么做的,所以你可以做到
next=actual->next; // means the same thing as "next=(*actual).next;"
Run Code Online (Sandbox Code Playgroud)
(原帖)
它意味着相同
b = (*a).b;
Run Code Online (Sandbox Code Playgroud)
它将局部变量设置b到的指针值a的b.例如:
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;"
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
108 次 |
| 最近记录: |