Подтвердить что ты не робот

На что указывает указатель "this + 1" на С++?

Я бродил по коду Sequitur G2P и нашел действительно странную строку кода:

public:
    ...
    const Node *childrenEnd() const { return (this+1)->finalized.firstChild_; }

Я знаю, что this является указателем на текущий объект, и поскольку он является указателем, операция совершенно легальна, но что на самом деле означает this+1?

4b9b3361

Ответ 1

Предположительно this является частью массива, поэтому this+1 будет ссылаться на следующий объект в этом массиве.

Ответ 2

this - это просто указатель, который ссылается на этот объект. Поскольку это указатель, вы можете применить арифметику указателей и даже индексирование массива.

Если этот объект является элементом в массиве, this+1 будет указывать на следующий объект в массиве.

Если это не так, хорошо, что он просто будет обрабатывать то, что находится в этой памяти, так же, как этот объект, который будет undefined, если он не является одним и тем же типом.

Ответ 3

Как и NLP, имеет смысл оптимизировать управление памятью. Я предполагаю, что вы также обнаружили перегруженные новые методы /delete.

Эта конструкция + 1 предполагает, что все объекты находятся в массиве. Имя "childrenEnd" метода указывает, что оно возвращает указатель на адрес конца дочерних элементов текущего node.

Таким образом, вы смотрите на реализацию древовидной структуры. Все братья и сестры смежные и их дети также.