Jef*_*eff 8 c++ stl operator-overloading
我最近查看了SGI STL的源代码.我想知道我是否可以使用" - >"运算符替换(*node).data实现operator*(),如下所示:
reference operator*() const {return (*node).data;}
Run Code Online (Sandbox Code Playgroud)
取而代之:
reference operator*() const {return node->data;}
Run Code Online (Sandbox Code Playgroud)
此外:
node是一个指向struct对象的指针,如下所示:
template<class T>
struct __list_node {
typedef void * void_pointer;
void_pointer prev;
void_pointer next;
T data;
};
Run Code Online (Sandbox Code Playgroud)
Jos*_*eld 10
在大多数情况下(例如,何时node是指针),这些将是等效的.的x->y操作者被定义为等同于(*(x)).y.但是,它可能会过载,operator*或者operator->在这种情况下它们可能不会像您期望的那样(但它们应该).
如你所说,在这种情况下node只是一个指针,所以它们是等价的.
| 归档时间: |
|
| 查看次数: |
138 次 |
| 最近记录: |