C++的指针和引用参数

来源:计算机等级考试    发布时间:2012-08-29    计算机等级考试视频    评论

  因为编译器在做类型转换时,如果是指针类型,必须检查空值(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个指令。

  编辑特别推荐:

  C++简单内存泄漏检查机制实现

  C++类型转换:转换操作符

视频学习

我考网版权与免责声明

① 凡本网注明稿件来源为"原创"的所有文字、图片和音视频稿件,版权均属本网所有。任何媒体、网站或个人转载、链接转贴或以其他方式复制发表时必须注明"稿件来源:我考网",违者本网将依法追究责任;

② 本网部分稿件来源于网络,任何单位或个人认为我考网发布的内容可能涉嫌侵犯其合法权益,应该及时向我考网书面反馈,并提供身份证明、权属证明及详细侵权情况证明,我考网在收到上述法律文件后,将会尽快移除被控侵权内容。

最近更新

社区交流

考试问答