void f(boost::shared_ptr<int> ptr)
{
if (ptr) // should we check?
// do something
}
void f2(int *p)
{
if (p) // good practice to check before using it
// do something
}
Run Code Online (Sandbox Code Playgroud)
问题:我们应该shared_ptr在使用前验证吗?
不.如果它在函数的合同中它必须是有效的,那么最快的方式来引起关注调用者有bug的事实就是崩溃.尽早失败.
是的。shared_ptr 只是让您通过计算对它的引用来知道何时释放其分配的内存。在使用它之前,您仍然应该验证它是否有效,假设您没有其他方法事先知道它肯定不会为空,但这不属于您是否使用shared_ptr的问题。
| 归档时间: |
|
| 查看次数: |
2484 次 |
| 最近记录: |