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をポインタ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;"
于 2013-06-13T01:19:33.933 に答える
2

a構造体またはクラスへのポインターでありa->b、その構造体またはクラス内の何かであり、おそらく変数です。in structbの値が割り当てられているというローカル スコープ変数もあります。完全なコードを見ないと、それ以上のことは言えません。ba

于 2013-06-13T01:21:12.577 に答える
0

まず、=and->は C++ 言語の基本的な組み込み演算子です。これらは C から継承されています。これらの演算子の意味は、C または C++ に関する書籍に記載されています。

第 2 に、C++ では=との両方がオーバーロード可能な演算子です。つまり、何が何であるかを知らず->に正確な意味をb = a->b決定することはできません。ab

于 2013-06-13T01:30:19.467 に答える