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个指令。

原文链接: https://www.cnblogs.com/swpattern/archive/2010/05/08/1730447.html

欢迎关注

微信关注下方公众号,第一时间获取干货硬货;公众号内回复【pdf】免费获取数百本计算机经典书籍

    C++的指针和引用参数

原创文章受到原创版权保护。转载请注明出处:https://www.ccppcoding.com/archives/10661

非原创文章文中已经注明原地址,如有侵权,联系删除

关注公众号【高性能架构探索】,第一时间获取最新文章

转载文章受原作者版权保护。转载请注明原作者出处!

(0)
上一篇 2023年2月7日 上午12:08
下一篇 2023年2月7日 上午12:08

相关推荐