Форум программистов, компьютерный форум CyberForum.ru

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
NegativeCreep
1 / 1 / 0
Регистрация: 30.06.2010
Сообщений: 19
#1

Переопределение операции присваивания - C++

13.10.2012, 02:23. Просмотров 453. Ответов 4
Метки нет (Все метки)

В случае, когда в классе есть члены, память под которые выделяется динамически, операцию присваивания, как и конструкторы с деструкторами надо переопределять, это понятно.
Вопрос в следующем: почему во всех примерах, которые я видел, возвращаемое значение - не const, т.е. если, например, есть класс example, перегрузка присваивания будет иметь такой прототип:
example & operator=(const example & f);

а не такой

const example & operator=(const example & f);

Ведь можно, например, сделать такую вещь, что нехорошо:

C++
1
2
example a,b;
(a=b).SomeMethod();
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
13.10.2012, 02:23     Переопределение операции присваивания
Посмотрите здесь:

C++ Переопределение оператора присваивания
Переопределение операции: постфиксный унарный + C++
Вызов функции с левой стороны от операции присваивания C++
C++ переопределение операции сложения вычетания сравнения
Перегрузка операции присваивания и сложения C++
C++ Операции присваивания
C++ Переопределение операции инкремента
Для чего нужно переопределение оператора присваивания? C++
C++ Переопределение операции присваивания
C++ Переопределение операции []
C++ Переопределение операции вычитания строк
C++ Переопределение операции (-) вычитания для строк

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Toshkarik
1139 / 856 / 51
Регистрация: 03.08.2011
Сообщений: 2,384
Завершенные тесты: 1
13.10.2012, 02:30     Переопределение операции присваивания #2
Потому что то же самое можно делать и со встроенными типами. Вы ведь можете написать так:
C++
1
2
int a, b, c;
a = b = c = 0;
Хотя это зависит от класса и его назначения, такое можно позволить для математических классов, вроде комплексных чисел.
NegativeCreep
1 / 1 / 0
Регистрация: 30.06.2010
Сообщений: 19
13.10.2012, 02:47  [ТС]     Переопределение операции присваивания #3
Видимо, вы не поняли, что я имел в виду. Зачем нужно возвращаемое значение вообще - понятно, чтобы строить цепочки присваиваний.
Непонятно, почему оно не const?
Toshkarik
1139 / 856 / 51
Регистрация: 03.08.2011
Сообщений: 2,384
Завершенные тесты: 1
13.10.2012, 02:57     Переопределение операции присваивания #4
NegativeCreep, так я же написал, потому что это возможно для встроенных типов, можно так же писать:
C++
1
( a = b ) = c = 0;
И опять же повторюсь - зависит от класса, и его цели.
NegativeCreep
1 / 1 / 0
Регистрация: 30.06.2010
Сообщений: 19
13.10.2012, 03:08  [ТС]     Переопределение операции присваивания #5
Теперь ясно, спасибо, затупил сначала)
Yandex
Объявления
13.10.2012, 03:08     Переопределение операции присваивания
Ответ Создать тему
Опции темы

Текущее время: 10:01. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru