在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'指示它返回一个指向当前节点的子节点结束地址的指针。

因此您正在查看树结构的实现。 所有的兄弟姐妹都是相邻的,也是他们的孩子。