C++的指针和引用参数

作函数参数,引用比指针更高效

因为编译器在做类型转换时,如果是指针类型,必须检查空值(NULL)

例如: CXxx类继承自接口类MYyy
class CXxx : public CBase,public MYyy

{...};

那么,如果一个函数接受MYyy指针的参数,而实际上传了CXxx对象指针,编译器必须坚查如果不是空指针,则必须把指针跳过CBase,指向CXxx对象中MYyy的部分,如果是空指针则不需如此。

比如,cp是一个CXxx指针,Func(MYyy*)函数接受MYyy指针。调用Func(cp)时编译器作了如下工作。
Func((MYyy* aM)(cp==NULL ? NULL : (TUint8*)cp+sizeof(CBase)));

引用不会为Null,所以使用引用做参数时没有必要检查NULL。

在ARM上,从CXxx指针转换到MYyy*指针的开销是8个指令,而对应的引用转换只开销了2个指令。

posted on 2010-05-08 14:06  魏方  阅读(312)  评论(0编辑  收藏  举报

导航