2.9.4 成员选择符(2)

2013-10-07 15:29:47 · 作者: · 浏览: 76

2.9.4    成员选择符(2)

例2-72

我们对例2-71进行扩充,以演示通过指针访问类成员的两种方式:一种是通过指向类对象的指针访问;另一种是通过指向类的float类型数据成员的指针访问。

 
 
指针c_ptr是C*类型的指针,所以能够保存对象c1和c2的地址。指针f_ptr的类型是指向类C的float类型成员的指针,所以能存储c::y和c::z的地址。表达式
 
操作符->*可视为执行了两项操作:首先,箭头->通过提取c_ptr的内容来访问类对象c2;其次,星号*通过提取f_ptr的内容来访问特定的数据成员。这样,->*的语义就是:通过对象指针(->)来提取类成员指针的内容,从而访问该成员。在->*两边的空格都是可有可无的,如下书写方式也是正确的(->*的两边没有空格):
 

指向成员函数的指针与上例中指向类数据成员的指针的用法相同。

例2-73

下面的程序说明了如何定义和使用指向成员函数的指针: