【发布时间】:2011-06-09 18:10:41
【问题描述】:
我有一个智能指针类,我想重载operator->;它是为了方便而提供的,因此我可以直接访问包含在智能指针中的类的成员。
我正在研究 Boost 在其 shared_ptr 模板中实现此运算符的方式。我注意到他们在返回指针之前添加了一个断言检查指针是否确实非空。目前,我的运算符返回指针而不检查它是否为空(本质上,空指针在我当前的实现中是未定义的行为)。我也应该添加这个断言吗?
(另外,这个操作符是怎么叫的?我在网上找不到这个。)
【问题讨论】:
-
称自己的班级“聪明”任何事情都是灾难的根源。
-
您是否想要未定义的行为?它 100% 是您在实施中的选择。我认为这里没有人能告诉你是应该还是不应该添加这样的功能。
-
@Tomalak 这就是他们所说的——智能指针。名字不是我编的。 ;)
-
我知道他们是这么称呼的(有些人)。这仍然是灾难的根源。
-
@Tomakal 假设你不是在开玩笑......名字怎么会成为灾难的根源? Boost 也是一场灾难吗(见
boost/smart_ptr/)?