我有一个聪明的指针类,我想重载operator->;提供它是为了方便,所以我可以直接访问智能指针中包含的类的成员。

我一直在研究Boost在其shared_ptr模板中实现此运算符的方式。我注意到他们在返回指针之前添加了一个断言检查指针是否确实为非空。当前,我的运算符返回指针而不检查它是否为空(本质上,空指针在我当前的实现中是未定义的行为)。我是否也应该添加此断言?

(此外,该运算符的名称是什么?我在网络上找不到此名称。)

最佳答案

由你决定。您可以简单地记录下使用null指针定义它是未定义的,什么也不做,可以断言,可以引发异常。没有正确的答案。就个人而言,我可能会抛出一个异常(exception)。

09-10 04:02