【发布时间】:2014-01-10 21:44:03
【问题描述】:
我最近查看了 SGI STL 的源代码。我想知道是否可以用“->”运算符代替(*node).data来实现operator*(),像这样:
reference operator*() const {return (*node).data;}
替换为:
reference operator*() const {return node->data;}
另外:
node 是一个指向结构对象的指针,如下所示:
template<class T>
struct __list_node {
typedef void * void_pointer;
void_pointer prev;
void_pointer next;
T data;
};
【问题讨论】:
-
可以,但有什么意义呢?
-
可能,是的。
node是什么类型,它是重载operator->还是一元operator*? -
node 是一个指向 struct __list_node {} 的指针
-
@herohuyongtao 他们通常应该是,但没有强制执行。就像
++a和a++可能会以不同的方式影响a- 或者就像c << n可能有副作用并且意味着与按位移位不同的东西,命名为流行的早期重载更改运算符意思。
标签: c++ stl operator-overloading