如何自动为指针解除引用添加安全措施?

时间:2013-02-23 18:13:29

标签: c++ pointers

当取消引用无效指针或智能指针时代码崩溃。添加一个断言以帮助找到问题。例如,

Type* p = NULL; // Always initilize to be null.
assert(p); // Add before dereferencing to help to find the problem.
p->f(); // Crashes if p is invalid.

我的问题是如何在解除引用指针时自动添加断言。例如,

#define PTR_RUN(p, f) assert(p); p->f;

这有效但不易读,可能会因粗心使用宏而产生一些隐藏的问题。有更好的方法吗?感谢。

3 个答案:

答案 0 :(得分:2)

或者可能值得使用在某些情况下抛出异常的某种智能指针?

答案 1 :(得分:1)

通常人们会写,

if ( p ) p->f

 p && p->f

使用短路AND运算符

答案 2 :(得分:1)

您可以为给定类型重载运算符->,并可能在其中添加断言函数。我从来没有这样做但它可能有用。