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 回答