Практический курс по C/C++: stepik.org/course/193691/ Телеграм-канал: t.me/java_and_c Инфо-сайт: proproprogs.ru/cpp_oop Переопределение операции присваивания на примере класса динамического массива. Правило трех и правило пяти.
Пікірлер: 14
@andredru42785 күн бұрын
Спасибо. Великолепный пример!
@szapsisАй бұрын
Спасибо большое за твой труд друг!
@user-bn5cf7uw3xАй бұрын
Вектор. Начало. С нетерпением жду второй части)
@donlinoleum831Ай бұрын
Ну что же, очень ждем следующее занятие)
@giftingif7667Ай бұрын
Здравствуйте, Сергей. Скажите, планируются ли на канале какие-то обучающие видео по нейросетям (не по программированию, а по использованию). Про промпты, про какие-то необычные находки. Т.к. вы явно не могли мимо пройти всего того, что растёт каждый день как грибы и умение "разговаривать" с моделями сейчас очень важно будет в перспективе многих деятельностей.
@user-gi9vh4zy9rАй бұрын
Спасибо очень круто. Делал все по видео, и была такая проблема что capacity после 1 итерации принимал значение сразу 30, плюс были синтаксическая ошибка наверное в команде int *p = new int[capacity]; а писал так int *p = new int{capacity}; оказывается это походу ошибка. А проблему с capacity исправил в 8 строке файла darray.cpp на while (capacity < size_new). Спасибо еще раз, смотрю, вникаю, нравиться!!!
@selfedu_rusАй бұрын
int *p = new int{capacity}; создает переменную типа int со значением capacity )) Успехов!
@catsaur5991Ай бұрын
Друзья, а почему на 13:05 мы можем сделать return other ? Ведь разве мы не возвращаем ссылку на созданный объект? А у объекта other ведь другой адрес, это ведь отличный объект от *this ?
@selfedu_rusАй бұрын
без разницы, можно и *this вернуть, смысл, что после присваивания состояния обоих объектов равны и возврат делаем, чтобы операция работала по цепочке a = b = c = d
@catsaur5991Ай бұрын
@@selfedu_rus и еще глупый вопрос) а что именно дает возврат этого метода константной ссылки? const DArray& DArray::operator = (const DArray& other). то есть оператор присваивания возвращает объект, константный объект, верно? который мы , по идее, не можем изменить. верно?)
@selfedu_rusАй бұрын
да, его и не нужно менять, это же присваиваемое значение
darray.h #ifndef _DARRAY_H_ // youtube auto, write without "space":( _ D A R R A Y _ H _) #define _DARRAY_H_ class DArray { enum { start_length_array = 8, // начальная длина массива resize_factor = 2, // множитель для увеличения длины массива max_length_array = 30, // максимальная длина массива value_error = 2123456789, // специальное значение для обозначения ошибки данных }; int *data {nullptr}; int length {0}; int capacity {0}; void _resize_array(int size_new); public: DArray() : length(0), capacity(start_length_array) { data = new int[capacity]; } DArray(const DArray& other) : length(other.length), capacity(other.capacity) { data = new int[capacity]; for(int i = 0; i < length; ++i) data[i] = other.data[i]; } ~DArray() { delete[] data; } int size() const {return length; } int capacity_ar() const {return capacity; } const int* get_data() const {return data; } const DArray& operator=(const DArray& other); void push_back(int calue); int pop_back(); }; #endif