以下代码在c ++中的含义是什么?

时间:2011-03-29 03:22:15

标签: c++ pointer-to-member

struct Dog{  
  int a;  
  int b;  
};

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

&Dog::a指的是什么?

3 个答案:

答案 0 :(得分:4)

它创建一个指向成员的指针,它类似于指向类的数据成员的指针,但是类实例尚未确定,它只是偏移量。 (注意,当与多重继承或虚拟继承结合使用时,它比简单的偏移量要复杂得多。但编译器可以解决这些问题。)

注意在最后一行中使用的指向成员的解引用操作符->*,其中类实例与指向成员的指针组合以产生特定实例的特定数据成员。

答案 1 :(得分:2)

变量location称为“成员数据指针”。它是指向结构内部某些东西的指针,但除非它与实际对象指针一起使用,否则没有意义。使用*location本身并不足以解析实际地址,但obj1->*location指的是实际位置。

答案 2 :(得分:-2)

&安培;意思是取一些东西的地址。