在Android的SurfaceFlinger.cpp中有这样两个函数:
const GraphicPlane& SurfaceFlinger::graphicPlane(int dpy) const
{
    const GraphicPlane& plane(mGraphicPlanes[dpy]);
    return plane;
}GraphicPlane& SurfaceFlinger::graphicPlane(int dpy)
{
    return const_cast<GraphicPlane&>
        (const_cast<SurfaceFlinger const *>(this)->graphicPlane(dpy));
}第二个函数的
const_cast<GraphicPlane&>
        (const_cast<SurfaceFlinger const *>(this)->graphicPlane(dpy));
语法一直看不明白,请C++牛人赐教啊另外
const_cast<SurfaceFlinger const *>与
const_cast<SurfaceFlinger *>
是否一样?各表示什么含义?谢谢!

解决方案 »

  1.   

    const_cast是类型转换,
    const_cast<GraphicPlane&> (const_cast<SurfaceFlinger const *>(this)->graphicPlane(dpy)); 的意思就是先把this转成SurfaceFlinger const *类型的指针,然后调用SurfaceFlinger的成员函数graphicPlane,把该函数的返回值再转成GraphicPlane&类型下面代码的区别的就是一个转成SurfaceFlinger const *类型,一个转成SurfaceFlinger *类型
    const_cast<SurfaceFlinger const *>与
    const_cast<SurfaceFlinger *>