在C ++中指针“this + 1”是指什么?
我徘徊于Sequitur G2P的代码中,发现了一个非常奇怪的代码行:
public: ... const Node *childrenEnd() const { return (this+1)->finalized.firstChild_; }
我知道this
是一个指向当前对象的指针,因为它是一个指针,操作是完全合法的,但是this+1
实际上是指什么?
大概this
是一个数组的一部分,所以this+1
将引用该数组中的下一个对象。
this
只是一个指向这个对象的指针。 既然它是一个指针,你可以应用指针运算,甚至数组索引。
如果这个对象是一个数组中的一个元素,那么this+1
会指向数组中的下一个对象。
如果不是这样的话,那么只要将这个内存中的任何内容与这个对象相同,除非它是相同的types,否则这将是未定义的行为。
因为它是NLP,所以优化内存pipe理是有意义的。 我假设你也发现重载的新/删除方法。
这个+ 1构造假设所有的对象都驻留在一个数组中。 该方法的名字'childrenEnd'指示它返回一个指向当前节点的子节点结束地址的指针。
因此您正在查看树结构的实现。 所有的兄弟姐妹都是相邻的,也是他们的孩子。