+ -
当前位置:首页 → 问答吧 → &**this 是什么意思?

&**this 是什么意思?

时间:2011-12-06

来源:互联网

C/C++ code

pointer operator->() const  
{  
       return [color=#FF0000]&**this[/color];  
}  




*this 解引用成为对象,在去它的引用,怎么还有个一个星号?

作者: imstyle1001   发布时间: 2011-12-06

二级指针,三级指针.......

作者: mymixing   发布时间: 2011-12-06

C/C++ code

pointer operator->() const  
{  
       return &**this;  
} 


类的this 指针 没有二级,三级什么的吧,在没有虚函数的情况下

作者: imstyle1001   发布时间: 2011-12-06

这个类很可能是一个迭代器,*this是迭代器对象,**this是迭代器指向的对象,&**this是迭代器指向对象的地址

作者: hufanxing   发布时间: 2011-12-06

确实,这是STL里面的源代码,实现deque的内部指针,迭代器的语义感觉有点绕啊,有能解释下吗?
按你说的就是一个对象指向另一个对象?

作者: imstyle1001   发布时间: 2011-12-06

引用 2 楼 imstyle1001 的回复:
类的this 指针 没有二级,三级什么的吧,在没有虚函数的情况下


你这上下文不够,总之,你这个this的类型应该支持了3级的跳转。
一次强转都没出现。

作者: mymixing   发布时间: 2011-12-06

*运算符也是被重载的,不能按照通常的解引用来理解&**this,这样实现应该属于类似智能指针了,搞的有点晕

作者: imstyle1001   发布时间: 2011-12-06

this是指指向当前对象的指针,*this是对这个对象的解引用,也就是获取当前对象;
如果你的这个对象是一个迭代器,那么该迭代器本身实现了*号的重载,利用**this就可以获取迭代器所指向的对象;
然后用&取地址符号就可以获取迭代器所指向对象的地址。

作者: wumuzi520   发布时间: 2011-12-06

引用 6 楼 imstyle1001 的回复:
*运算符也是被重载的,不能按照通常的解引用来理解&**this,这样实现应该属于类似智能指针了,搞的有点晕

恩,应该是这样,没有研究过STL,细节上的东西不太了解。

作者: mymixing   发布时间: 2011-12-06

&**this 分解来看

this 对象 |的指针
*this 指向->对象指针 |的指针
**this 指向->(指向->对象指针) |的指针
&**this 指向->(指向->对象指针)指针 |的地址

作者: jptaozhantaozhan   发布时间: 2011-12-06

引用 9 楼 jptaozhantaozhan 的回复:

&**this 分解来看

this 对象 |的指针
*this 指向->对象指针 |的指针
**this 指向->(指向->对象指针) |的指针 //?
&**this 指向->(指向->对象指针)指针 |的地址

确实是的,但有点难理解;
举个例呗;

是不是还是返回this对象 *this

mark一下,等下来看

作者: self001   发布时间: 2011-12-06