#5. Конструктор копирования. Делегирующие конструкторы | Уроки ООП C++

  Рет қаралды 4,114

selfedu

selfedu

Күн бұрын

Практический курс по ООП C++: stepik.org/a/2...
Телеграм-канал: t.me/java_and_c
Инфо-сайт: proproprogs.ru...
Роль конструктора копирования при создании объектов класса. Пример необходимости переопределения конструктора копирования. Делегирование конструкторов, как инструмент устранения повторяемости кода.

Пікірлер: 23
@karimoff2.070
@karimoff2.070 10 ай бұрын
За все время , как подписан подписан данный канал ни разу ещё не пожалел , успехов и большое спасибо за знания!❤
@ГущинАндрей-ч5ы
@ГущинАндрей-ч5ы 11 ай бұрын
Очень много видел вариантов объяснения этой темы, но этот самый доступный. Спасибо
@ВладимирЕрманов
@ВладимирЕрманов 11 ай бұрын
Сердечно благодарю.
@szapsis
@szapsis 11 ай бұрын
Спасибо большое за твой труд друг!
@РусланКарнеенко
@РусланКарнеенко 11 ай бұрын
Спасибо
@andredru4278
@andredru4278 9 ай бұрын
Спасибо. Очень интересно.
@bioxoid
@bioxoid 10 ай бұрын
начало ------------ #include class PointND { unsigned total {0}; int *coords {nullptr}; public: PointND() : total(0), coords(nullptr) { } PointND(unsigned sz) : total(sz) { coords = new int[total] {0}; } PointND(int* cr, unsigned len) : total(len) { coords = new int[total]; set_coords(cr, len); } ~PointND() { delete[] coords; } unsigned get_total() { return total; } const int* get_coords() { return coords; } void set_coords(int* cr, unsigned len) { for(unsigned i = 0; i < total; ++i) coords[i] = (i < len) ? cr[i] : 0; } }; int main() { PointND pt(5); PointND pt2 {pt}; return 0; }
@bioxoid
@bioxoid 10 ай бұрын
финал ----------- #include class PointND { unsigned total {0}; int *coords {nullptr}; public: PointND() : total(0), coords(nullptr) { } PointND(unsigned sz) : total(sz) { coords = new int[total] {0}; } PointND(int* cr, unsigned len) : PointND(len) { //coords = new int[total]; set_coords(cr, len); } PointND(const PointND& other) : PointND(other.coords, other.total) { } ~PointND() { delete[] coords; } unsigned get_total() { return total; } const int* get_coords() { return coords; } void set_coords(int* cr, unsigned len) { for(unsigned i = 0; i < total; ++i) coords[i] = (i < len) ? cr[i] : 0; } const PointND& operator=(const PointND& other) { if(this == &other) return *this; delete[] coords; total = other.total; coords = new int[total]; set_coords(other.coords, total); return *this; } }; int main() { PointND pt(5); PointND pt2; pt2 = pt2; return 0; }
@mrsteve4042
@mrsteve4042 10 ай бұрын
Здравствуйте, Сергей, оператор копирующего присваивания не совсем безопасно реализован, если возникнет bad alloc, то объектом будет нельзя пользоваться (в coords будет неопределенное значение). Если кто то читает этот комментарий, посмотрите идиому copy-and-swap, она позволяет делать копирование безопасно
@selfedu_rus
@selfedu_rus 10 ай бұрын
Согласен, не стал уж так сразу душнить в учебном материале ))
@mrsteve4042
@mrsteve4042 10 ай бұрын
@@selfedu_rus понял, тогда вопросов нет 👍
@maratfoxcode8542
@maratfoxcode8542 11 ай бұрын
Здравствуйте Сергей! Подскажите планируете ли дополнять курс по Django на степике? DRF, celery, docker, deploy. И когда если да) спасибо за ответ))
@selfedu_rus
@selfedu_rus 11 ай бұрын
Сейчас все мысли с C++
@АлексейАлексеев-ц8х9т
@АлексейАлексеев-ц8х9т 10 ай бұрын
​@@selfedu_rusбудет ли текстовая версия с++ на proproprogs?
@Norskium
@Norskium 11 ай бұрын
Почему нет уроков на сайте? Будут ли они?
@selfedu_rus
@selfedu_rus 11 ай бұрын
будут, когда выйдет этот сериал целиком
@Norskium
@Norskium 11 ай бұрын
@@selfedu_rus спасибо большое! А будет ли курс на степике по ооп?
@Xyeta-998-Absos-CocuMouXyu
@Xyeta-998-Absos-CocuMouXyu 7 ай бұрын
Офигеть можнО! Ахринительный ролик.
@Misha5550
@Misha5550 11 ай бұрын
Я не могу.. Почему мне так смешно с его акцента каждый раз. Увотета , шьто
@nsynecs
@nsynecs 11 ай бұрын
Лечитесь
@blazemettime4310
@blazemettime4310 27 күн бұрын
@@nsynecs мне тоже смешно🤣
The Best Band 😅 #toshleh #viralshort
00:11
Toshleh
Рет қаралды 22 МЛН
人是不能做到吗?#火影忍者 #家人  #佐助
00:20
火影忍者一家
Рет қаралды 20 МЛН
Разбираю СЛИВ устного собеседования | Умскул
15:34
Русский язык ОГЭ Умскул
Рет қаралды 6 М.
ЛИНЕЙНАЯ ФУНКЦИЯ | формула y = kx + b
7:14
Александра Gauss
Рет қаралды 41
The Best Band 😅 #toshleh #viralshort
00:11
Toshleh
Рет қаралды 22 МЛН