C ++, = Оператор разные параметрыC++

Программы на C++. Форум разработчиков
Ответить
Anonymous
 C ++, = Оператор разные параметры

Сообщение Anonymous »

Я написал следующую функцию для = < /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
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C++»