在应用ADO编程时,经常有如下形式的调用:
_RecordsetPtr rs; rs.CreateInstance(__uuidof(_Recordset));
在 CreateInstance 方法被调用后, 声明的变量可如下方式使用::
rs->Open(...);
注意到在第一种使用“ . ”操作符情形下,变量好像是类的一个实例 (rs.CreateInstance);而在第二种使用“->”操作符情形下,变量好像是一个指向接口的指针 (rs->Open).
一个变量之所以能按两种方式使用,是因为“->”操作符被重载了,它的重载使得类的实例能象指针那样指向一个接口。实例变量的一个私有类成员包含了一个指向 _Recordset 接口的指针;“->”操作符返回那个指针,返回的指针可以访问 _Recordset 的成员。