Обратите внимание на тег моего домашнего задания. Как и во всех домашних заданиях, приветствуются полезные советы по прямым ответам на фактическое кодирование. Однако не стесняйтесь прямо отвечать на любые мои концептуальные вопросы.
Привет,
Мой профессор дал нам двусвязный список для домашнего задания, и я избегал просить о помощи до тех пор, пока она мне абсолютно не понадобилась, и вот я здесь.
Он предоставляет нам заголовочные файлы, для которых мы затем должны создать класс и должны идеально следовать заголовочному файлу. То, как он делает свой конструктор копирования, заключается в том, что он заставляет нас написать вспомогательную функцию, которую мы просто вызываем конструктором копирования.
Я могу сделать это легко в обычном случае, но на этот раз он дал нам очень странную подпись для вспомогательной функции:
// copys chain at oldHead to newHead.
static void copy(Elem *&newHead, const Elem *oldHead)
Это нужно для копирования цепочки структур под названием Elems:
struct Elem
{
Information info;
Elem *next;
Elem *back;
};
Я думаю, я больше всего не понимаю, что такое Elem *& бизнес, потому что, насколько я помню, & и * не компенсируют друг друга?
Спасибо, любая помощь очень ценится! Надеюсь, это поможет другим людям в моем положении в будущем :)
&
является оператором адреса. В объявлении&
обозначает объявление ссылки. Эти несвязанные понятия, к сожалению, имеют один и тот же символ. Если вы можете понять этот момент, то все остальные комментарии о том, чтоElem *&newHead
является ссылкой на указатель на Elem, должны иметь смысл. - person Robᵩ   schedule 14.11.2011