我在浏览Sequitur G2P的代码时发现了一段非常奇怪的代码:
public:
...
const Node *childrenEnd() const { return (this+1)->finalized.firstChild_; }
Run Code Online (Sandbox Code Playgroud)
我知道这this是一个指向当前对象的指针,因为它是一个指针,操作完全合法,但this+1实际上是指什么?
Jon*_*son 59
大概this是数组的一部分,所以this+1会引用该数组中的下一个对象.
Tas*_*Tas 33
this只是一个引用此对象的指针.由于它是一个指针,因此您可以应用指针算法甚至数组索引.
如果此对象是数组中的元素,则this+1指向数组中的下一个对象.
如果不是,那么它只是将该内存中的任何内容视为与此对象相同,除非它是相同类型,否则将是未定义的行为.
因为它是NLP,所以优化内存管理是有意义的.我假设您也发现了重载的新/删除方法.
this + 1构造假设所有对象都驻留在数组中.方法的名称'childrenEnd'表示它返回指向当前节点的子节点结尾的地址的指针.
因此,您正在研究树结构的实现.所有兄弟姐妹都和他们的孩子相邻.
| 归档时间: |
|
| 查看次数: |
6267 次 |
| 最近记录: |