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>
总结引用的效率更高能使用引用就使用引用
除非在对应的对象在不停的发生变化那就只能用指针了.