[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