【发布时间】:2014-09-30 13:35:07
【问题描述】:
测试智能指针有什么区别吗? shared_ptr,使用operator bool
if (!smart_ptr)
{
// ...
}
并使用operator == ?
if (smart_ptr == nullptr)
{
// ...
}
我知道差异会很小(如果有的话),但它也有助于同时决定编码风格。
【问题讨论】:
-
我认为使用体面的编译器差异将为零。在我看来,
if (!smart_ptr)更紧凑,也更富有表现力。 -
如果现代编译器在优化的构建中没有为两者生成相同的代码,我会感到惊讶。 (最佳方式当然是结构化您的代码,这样您就根本不需要空检查。)风格方面,两者都很常见。如果您独自工作,请选择一种风格,但对另一种风格保持舒适。如果你在一个团队中工作,就一种风格达成一致并坚持下去。
-
重申@AntonSavin, if(!ptr) 更惯用;它也与 optional 以相同的方式工作(它使用第一种检查方式作为首先采用类似指针的语法的动机)。
-
@StefanAtev:关于可选的很好的说明,我会记住这一点。
-
能否请有经验的人告诉我如何才能使这个问题更具体?在我看来,我问过两种测试特定实体的方法有什么区别,我不知道如何改进。
标签: c++ c++11 coding-style