在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 *>
是否一样?各表示什么含义?谢谢!
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 *>
是否一样?各表示什么含义?谢谢!
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 *>