4
struct Dog{  
  int a;  
  int b;  
};

int Dog::*location = &Dog::a  
Dog* obj1 = new Dog;  
obj1->*location = 3;  

とはどういう&Dog::a意味ですか?

4

3 に答える 3

4

クラスのデータメンバーへのポインターのようなメンバーへのポインターを作成しますが、クラスインスタンスはまだ決定されておらず、単なるオフセットです。(注: 多重継承または仮想継承と組み合わせると、単純なオフセットよりもかなり複雑になります。ただし、コンパイラが詳細を解決します。)

最後の行で使用されているポインターからメンバーへの逆参照演算子に注意してください->*。ここでは、クラス インスタンスがポインターからメンバーと組み合わされて、特定のインスタンスの特定のデータ メンバーが生成されます。

于 2011-03-29T03:25:30.993 に答える
2

この変数locationは「メンバー データ ポインター」と呼ばれます。これは構造内の何かへのポインターですが、実際のオブジェクト ポインターと共に使用しないと意味がありません。を単独で使用し*locationても、実際の住所を解決するには十分な情報ではありませんがobj1->*location、実際の場所を参照します。

于 2011-03-29T03:25:59.497 に答える
-2

& は、何かのアドレスを取ることを意味します。

于 2011-03-29T03:25:00.387 に答える