Я написал следующую функцию для = < /code> operator: < /p>
Set& Set::operator=(const Set& s)
{
delete[] data;
data=new int [s.size];
size=s.size;
maxSize=s.size;
for (int i=0;i
Но я хотел, чтобы следующий код работал, как и ожидалось (без удаления текущих данных): < /p>
Set s1,s2;
s1=s1;
< /code>
Итак, я сделал следующие изменения: < /p>
Set& Set::operator=(const Set& s)
{
if (this == &s)
{
return *this;
}
delete[] data;
data=new int [s.size];
size=s.size;
maxSize=s.size;
for (int i=0;i
Мой вопрос: < /p>
1. < /strong> Почему это правильно: < /p>
if (this == &s)
{
return *this;
}
< /code>
, а это не: < /p>
if (this == s)
{
return *this;
}
< /code>
s - это ссылка, так что это местоположение на памяти, и нет необходимости использовать и оператор с ним
2. Можем ли мы написать следующее вместо того, что показано выше:
> if (*this == s)
{
return *this;
}
Подробнее здесь: https://stackoverflow.com/questions/621 ... nt-options