函数返回一个指向对象的指针,在这种情况下我该返回什么?

Izo*_*eak 3 c++ pointers return

如果你有一个通过查找数组中具有特定属性的对象返回指向对象的指针的函数,如果我在数组中找不到相应的对象,应该返回什么?而且,如果做得不好,这是否会对计划的安全性或稳定性造成风险?

Col*_*mbo 7

如果你有一个通过在这些对象的数组中查找特定属性来返回指向对象的指针的函数,那么如果我在数组中没有找到该属性,我应该返回什么?如果做得不好,这是否会对计划的安全性或稳定性造成风险?

您有三种基本可能性:

  • 只需返回一个空指针.这是最简单的方法,也可能是最好的方式.
  • 抛出一个例外.最好是特殊类型,但std::out_of_range也可以.
  • 返回指向默认对象的指针.只有在返回值必须指向有效对象时才合理.

无论您选择什么,都必须记录在案,并尽可能与其他案例保持一致.


Bas*_*tch 5

您可以返回调用者应该测试该情况nullptr约定.或者你可以抛出异常.

你可能会使用一些智能指针.

使用C++ 11,您可以采用不同的方法:传递lambda函数来处理找到的对象.