读More Effective C++(1)

本文探讨了C++中指针(*)与引用(&)的区别及使用场景,通过具体实例对比了两者在安全性与效率上的差异,并给出了编程建议。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

template<typename Ty>

  Ty* allocator(const size_t& size,)

  {

       return (static_cast<Ty*>(new(size) ));

  }


 这几天读了一下More Effective C++ 感觉真是总结的东西很到位啊!

  第一节说说指针和引用(*和&)

 

  这里用了一下引用没有使用指针因为这里的size只用了一次没有改变他的值所以使用了&,还有一个问题就是这里为啥非得用pass by reference 而不是pass by value这里传引用的话是节省空间的原因。

先总结一下啥时候使用指针啥时候使用引用;

 1.引用是绑定一个对象,如果你的对象的指向在不断的变化那么就不能使用引用&,因为&是bind的;

 2.还有就是&是绝对安全的,但是*在使用之前需要检查指针是不是为空,而&引用就不需要检查;

 写两个例子;

 

template<typename Ty>

 void foo(Ty& object)

{

  //TODO  这里就不需要检查&的正确性 因为在你传入参数的时候如果类型错误就会编译错误

}


 

<span style="font-size:18px;">template<typename Ty>

void Foo(Ty* object)

{

  //TODO 这里需要检验object是不是为空

      if(object==null)

///////////////////////////////////////

}
</span>
 


 

总结引用的效率更高能使用引用就使用引用

 

除非在对应的对象在不停的发生变化那就只能用指针了.

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值