Max*_*Max 5 c++ pointers smart-pointers
我之后有两种不同的情景:
shared_ptr unique_ptr答案可能是相同的.
考虑一种方法,它使用指针但不承担所有权:
void use_pointer(T ptr)
{
ptr->act();
}
Run Code Online (Sandbox Code Playgroud)
应该是
my_type * (原始指针)const shared_ptr<my_type> & (发送const ref,如果使用shared_ptr)const unique_ptr<my_type> & (发送const ref,如果使用unique_ptr)weak_ptr<my_type> (为方法调用构造weak_ptr)别的什么?谢谢!
Luc*_*ton 10
如果您不承担所有权,那么最好接受对指针的引用.如果你想表达可选性,你可以使用原始指针,或者你可以使用eg boost::optional<U&>(其中U是指针类型).
不承担所有权的函数几乎不会接受智能指针.对于智能指针接口中的被调用者而言,除了到达指针对象之外,通常没有任何用处.所以通过它.
让来电者决定:
template<typename T>
void use_pointer(const T& ptr)
{
ptr->act();
}
Run Code Online (Sandbox Code Playgroud)
与原始指针很好地工作(如果调用者有,例如,用自动或静态寿命的阵列), ,shared_ptr,unique_ptr和也各种迭代器类型的,如果呼叫者被一个元件传递从一个集合.
| 归档时间: |
|
| 查看次数: |
172 次 |
| 最近记录: |