Ссылка на плейлист со всеми уроками "Программирование на языке C++" - [ Ссылка ]
________________
Автор: Александр Смаль, Михаил Кринкин
Лицензия: [ Ссылка ]
Источник: [ Ссылка ]
____________
Задание для закрепления
Ниже даны несколько вариантов реализации оператора присваивания для класса String, выберите из них некорректные реализации, т.е. такие, которые неправильно работают с памятью (допускают утечки, обращаются к освобожденной памяти, используют неинициализированные указатели), нарушают семантику оператора присваивания или инвариант класса.
1.
String &operator=(const String &other)
{
str = new char[other.size + 1];
strcpy(str, other.str);
size = other.size;
return *this;
}
2.
String &operator=(const String &other)
{
delete[] str;
str = new char[other.size + 1];
strcpy(str, other.str);
size = other.size;
return *this;
}
3.
String &operator=(const String &other)
{
if (this != &other) {
str = other.str;
size = other.size;
}
return *this;
}
Выберите все подходящие ответы из списка
1
2
3
![](https://i.ytimg.com/vi/4z1Rjv6NSFg/maxresdefault.jpg)