[cpp] nonoverloadable operators
jinq0123 at 163.com
jinq0123 at 163.com
Mon Apr 2 10:42:17 CST 2007
李慧霸 wrote:
>> .* 不可重载,->* 就可以重载吗?
>> .* 有什么用?
>>
> .*和->*是用于 8220;指向成员变量/函数的指针 8221;解引用时的语法。
> 在最简单的情况下,指向成员的指针被实现为一个类内偏移,需要配合一个对象实例才能解引用。
> 在多继承环境下,这种指针的实现会很复杂,因编译器不同而迥异。
>
> 设T是一个类(结构体),mp是指向T的一个成员的指针,,例如:
> T Obj;
> T* pObj=&Obj;
> ...
> 则 8220;Obj.*p 8221;、 8220;pObj->*p 8221;分别是两种解引用的语法。
>
我不知道将".*"理解为解引用是否正确。
但我认为用解引用来解释至少会与普通指针的解引用相混淆。
因为你不能将 Ojb.*p 写为 Ojb.(*p), 或者加空格为 Ojb. *p, 或者将*号提前
*Obj.p.
因为.*合在一起才是一个操作符,操作数是一个成员指针。
注意:p是指向类成员的指针,不是普通指针。
另外,我试了下,->* 是可以重载的。
More information about the Cpp
mailing list