August 2021
Intermediate to advanced
450 pages
9h 36m
Chinese
注意,在我们的每个链表函数中,都使用一个Link*作为第一个参数,并访问这个对象中的数据。我们把这种函数定义为成员函数。我们是否可以通过将操作变为成员函数来简化Link(或链接的使用)呢?我们是否可能令指针私有,以便只有成员函数能够访问它们呢?这些都是可以办到的:
这看起来是很有前途的方法。对于不改变Link状态的操作,我们将它们定义为const成员函数。我们增加了(非修改性)函数next()和previous(),从而用户可以遍历链表(的Link)——这两个函数现在是必要的,因为直接访问succ和prev被禁止了。我们仍将value定义为一个公有成员,因为(到目前为止)我们还没有理由不这样做——它“只是数据”。
现在尝试实现Link::insert(),我们可以赋值我们之前编写的全局函数insert()并适当修改它:
但我们如何获得调用Link::insert()的那个对象的指针呢?如果没有语言的帮助,我们是办不到的。但是,在每个成员函数中,标识符this都是指向调用此成员函数的对象的指针。我们可以简单地使用this而不再使用p: ...