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

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

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

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

13.10.2012, 02:23. Просмотров 467. Ответов 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++
Есть вот такой класс: #ifndef cd_h #define cd_h class Cd { private: char* performance; char* label; int selections;

Переопределение оператора присваивания - C++
Имеется такой простой класс: class TClass { private: float* A; int N; public: TClass(int _N) ...

Для чего нужно переопределение оператора присваивания? - C++
HumansClass& operator=(const HumansClass& right); //переопределение операции присваивания Для чего нужно переопределение оператора...

Операции присваивания - C++
Как можно проиллюстрировать возможности операций присваивания на примере программы?

Перегрузка операции присваивания и сложения - C++
Необходимо составить описание класса для определения одномерных массивов целых чисел. Границы индексов можно задавать произвольно, т.е....

Переопределение операции [] - C++
В классе строка переопределить операцию , которая будет возвращать символ по индексу, который передан в квадратные скобки. Помогите, не...

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Toshkarik
1140 / 857 / 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
1140 / 857 / 51
Регистрация: 03.08.2011
Сообщений: 2,384
Завершенные тесты: 1
13.10.2012, 02:57     Переопределение операции присваивания #4
NegativeCreep, так я же написал, потому что это возможно для встроенных типов, можно так же писать:
C++
1
( a = b ) = c = 0;
И опять же повторюсь - зависит от класса, и его цели.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
13.10.2012, 03:08     Переопределение операции присваивания
Еще ссылки по теме:

Переопределение операции инкремента - C++
Добрый вечер! Задачка простая и кода с примерами в сети куча, но меня волнует вопрос почему компилятор ругается на мой код: Myclass...

Создаются ли копии объектов при операции присваивания? - C++
Доброго времени суток! Допустим есть объекты одного класса a1, a2, a3. Насколько я понимаю, при операции присваивания a1=a2 создаётся...

Вызов функции с левой стороны от операции присваивания - C++
Здорова! Нужно перегрузить в классе String операцию выделения строки, но так чтобы она стояла слева от операции присваивания например...

Переопределение операции вычитания строк - C++
Нужно переопределить операцию вычитания строк. То есть из первой строки вычитаются все символы,содержащиеся во второй строке. Я...

Переопределение операции: постфиксный унарный + - C++
Привет. Делаю переопределение операции для стека, нужно сделать постфиксный +, как добавление нового элемента. stack& operator+() { ...

Переопределение операции (-) вычитания для строк - C++
Как переопределить вычитание для строк. С "+" более-менее понятно, а вот с "-" проблема.. Базовый и производные классы: class String ...


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

Или воспользуйтесь поиском по форуму:
NegativeCreep
1 / 1 / 0
Регистрация: 30.06.2010
Сообщений: 19
13.10.2012, 03:08  [ТС]     Переопределение операции присваивания #5
Теперь ясно, спасибо, затупил сначала)
Yandex
Объявления
13.10.2012, 03:08     Переопределение операции присваивания
Ответ Создать тему
Опции темы

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