当前所在位置:珠峰网资料 >> 计算机 >> 计算机等级考试 >> 正文
C++的指针和引用参数
发布时间:2010/5/11 16:19:43 来源:城市学习网 编辑:ziteng
  因为编译器在做类型转换时,如果是指针类型,必须检查空值(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个指令。
广告合作:400-664-0084 全国热线:400-664-0084
Copyright 2010 - 2017 www.my8848.com 珠峰网 粤ICP备15066211号
珠峰网 版权所有 All Rights Reserved