Форум программистов, компьютерный форум, киберфорум
Наши страницы

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

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

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

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

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

а не такой

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

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

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

Переопределение операции присваивания - 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++
В классе строка переопределить операцию , которая будет возвращать символ по индексу, который передан в квадратные скобки. Помогите, не...

4
Toshkarik
1143 / 860 / 51
Регистрация: 03.08.2011
Сообщений: 2,390
Завершенные тесты: 1
13.10.2012, 02:30 #2
Потому что то же самое можно делать и со встроенными типами. Вы ведь можете написать так:
C++
1
2
int a, b, c;
a = b = c = 0;
Хотя это зависит от класса и его назначения, такое можно позволить для математических классов, вроде комплексных чисел.
0
NegativeCreep
1 / 1 / 0
Регистрация: 30.06.2010
Сообщений: 19
13.10.2012, 02:47  [ТС] #3
Видимо, вы не поняли, что я имел в виду. Зачем нужно возвращаемое значение вообще - понятно, чтобы строить цепочки присваиваний.
Непонятно, почему оно не const?
0
Toshkarik
1143 / 860 / 51
Регистрация: 03.08.2011
Сообщений: 2,390
Завершенные тесты: 1
13.10.2012, 02:57 #4
NegativeCreep, так я же написал, потому что это возможно для встроенных типов, можно так же писать:
C++
1
( a = b ) = c = 0;
И опять же повторюсь - зависит от класса, и его цели.
1
NegativeCreep
1 / 1 / 0
Регистрация: 30.06.2010
Сообщений: 19
13.10.2012, 03:08  [ТС] #5
Теперь ясно, спасибо, затупил сначала)
0
13.10.2012, 03:08
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++
Привет. Делаю переопределение операции для стека, нужно сделать постфиксный +, как добавление нового элемента. stack& operator+() { ...


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

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Опции темы

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