Ответ 1
Предположительно this
является частью массива, поэтому this+1
будет ссылаться на следующий объект в этом массиве.
Я бродил по коду Sequitur G2P и нашел действительно странную строку кода:
public:
...
const Node *childrenEnd() const { return (this+1)->finalized.firstChild_; }
Я знаю, что this
является указателем на текущий объект, и поскольку он является указателем, операция совершенно легальна, но что на самом деле означает this+1
?
Предположительно this
является частью массива, поэтому this+1
будет ссылаться на следующий объект в этом массиве.
this
- это просто указатель, который ссылается на этот объект. Поскольку это указатель, вы можете применить арифметику указателей и даже индексирование массива.
Если этот объект является элементом в массиве, this+1
будет указывать на следующий объект в массиве.
Если это не так, хорошо, что он просто будет обрабатывать то, что находится в этой памяти, так же, как этот объект, который будет undefined, если он не является одним и тем же типом.
Как и NLP, имеет смысл оптимизировать управление памятью. Я предполагаю, что вы также обнаружили перегруженные новые методы /delete.
Эта конструкция + 1 предполагает, что все объекты находятся в массиве. Имя "childrenEnd" метода указывает, что оно возвращает указатель на адрес конца дочерних элементов текущего node.
Таким образом, вы смотрите на реализацию древовидной структуры. Все братья и сестры смежные и их дети также.