我最近查看了SGI STL的源代码。我想知道我是否可以使用“ - >”运算符替换(*node).data
以实现operator*()
,如下所示:
reference operator*() const {return (*node).data;}
替换为:
reference operator*() const {return node->data;}
另外:
node是一个指向struct对象的指针,如下所示:
template<class T>
struct __list_node {
typedef void * void_pointer;
void_pointer prev;
void_pointer next;
T data;
};
答案 0 :(得分:10)
在大多数情况下(例如,当node
是指针时),这些将是等效的。 x->y
运算符定义为等效于(*(x)).y
。但是,可能会重载operator*
或operator->
,在这种情况下,它们的行为可能与您预期的不同(但应该)。
正如你所说,在这种情况下node
只是一个指针,所以它们是等价的。