Item 15.指向类数据成员的指针
Item 15. Pointers to Class Members Are Not Pointers Pointers to Class Members:指向类成员的指针 注:本条中只涉及到非静态的数据成员 -------------------------------------------------------- 1、类成员的指针之声明: class C { public: //... int a_; }; int C::*pimC; //指向类C成员的指针,这里只是声明 2、类成员的指针之含义: 类成员的指针用“指针”这个词来描述很容易引起混淆,因为类成员的指针和指针的含义大相径庭: 指针包含地址;而类成员的指针并不涉及到内存地址,它只是引用了一个类的某个成员,而不是一个具体的对象的某个成员,类没有内存地址,因此类成员的指针也不能指向内存的某个地方,它通常只是一个偏移量(offset)。然而由于标准C++没有定义类成员的指针的实现,因此各个编译器厂家的实现也不尽相同,但大多数是用一个整数来表示这个偏移量。 pimC = &C::a_; //获取成员a_在C中的偏移量,如果a_为静态成员则pimC指向C::a_的地址 3、访问偏移量对应的数据成员 C aC; C *pC = &aC; aC.*pimC = 0; //*pimC应用到了C的每一个对象上 int b =