т.е. вызов конструктора в списке инициализаторов это нечто иное как изменение базового объекта в иерархии наследования, просто вызывая конструктор абстрактного класса мы меняем поведение вызывающего объекта?(производного от абстрактного)
JaxxDexx, , Спасибо за доступное объяснение концепции. Я правда был озадачен с технической точки зрения, комментарий оставил под ответом пользователя Mercury13
Большое спасибо за пояснение, неясным для меня остается одно:
else rear->next = add; //Тут мы присваиваем next адрес Node если элемент не первый
rear = add; //Тут мы просто меняем указатель на новую ноду
Получается мы просто "избавляемся" от предыдущего элемента если таковой есть, но при этом манипулируем одним из его полей next
Ведь теперь если я обращусь к rear->next то получу nullptr, ведь это последний элемент, куда же тогда теряется прошлая нода?
Или я все запутал и указатель на rear просто является частью прошлого элемента, а тут мы просто указываем новый конец
fshp, Я имел ввиду все факты вызова конструктора копирования
Действительно, не вызывается при присваивании. Я думаю мне лучше полностью освоить материал прежде чем задавать вопросы
fshp, Здравствуйте! Почитал еще по моему вопросу, выяснил вот такую последовательность:
- Создание временного объекта
- Вызов конструктора копирования у временного объекта (Type (const Type&))
- Выполняется почленное копирование из временного объекта в новый
- Удаляется временный объект