在C++中使操作员>过载

Overloading operator-> in C++

本文关键字:gt 过载 操作员 C++      更新时间:2023-10-16

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

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

(还有,这个运算符是如何调用的?我在网上找不到。)

这取决于您。您可以简单地记录将其与null指针一起使用是未定义的,并且什么也不做,您可以断言,您可以抛出异常。没有一个正确的答案。就我个人而言,我可能会抛出一个例外。

我也应该添加这个断言吗?

如果没有它你很开心,那也没关系只要确保它被记录在案:这才是最重要的。

(还有,这个操作员是怎么叫的?我在网上找不到这个。)

它并没有真正的名字。该标准只是将其称为"->运算符",也称为"类成员访问运算符之一"([expr.const])。

维基百科将其列为"a指向的对象的成员b"(是的,其他操作符都有简洁的标识符)。