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

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

Войти
Регистрация
Восстановить пароль
 
frontez
4 / 4 / 0
Регистрация: 26.04.2013
Сообщений: 124
#1

Для чего нужно переопределение оператора присваивания? - C++

06.06.2014, 06:02. Просмотров 295. Ответов 9
Метки нет (Все метки)

C++ (Qt)
1
    HumansClass& operator=(const HumansClass& right);   //переопределение операции присваивания
Для чего нужно переопределение оператора присваивания?
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
06.06.2014, 06:02
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Для чего нужно переопределение оператора присваивания? (C++):

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

Переопределение оператора () для своего класса - C++
У меня вопрос. Как переопределить оператор () для своего класса?Если можно,приведите пример.

Избыточное копирование объекта при реализации оператора умножения и оператора присваивания - C++
Есть класс работы с матрицами. Есть операция умножения матриц, описанная как оператор класса. В данном коротком примере я просто моделирую...

Неправильная работа оператора присваивания после работы оператора суммирования - C++
Доброго времени суток. У меня есть класс вектор class TVector {//ewde public: TVector(); //Vector(Vector &v); TVector(int...

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

Переопределение операции присваивания - C++
Есть вот такой класс: #ifndef cd_h #define cd_h class Cd { private: char* performance; char* label; int selections;

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Croessmah
Эксперт CЭксперт С++
13234 / 7506 / 846
Регистрация: 27.09.2012
Сообщений: 18,437
Записей в блоге: 3
Завершенные тесты: 1
06.06.2014, 06:10 #2
Цитата Сообщение от frontez Посмотреть сообщение
Для чего нужно переопределение оператора присваивания?
чтобы можно было писать a = b
0
uglyPinokkio
326 / 229 / 41
Регистрация: 30.05.2014
Сообщений: 682
06.06.2014, 06:18 #3
Цитата Сообщение от frontez Посмотреть сообщение
Для чего нужно переопределение оператора присваивания?
Если объект содержит указатель, то тупое присвоение чревато
0
frontez
4 / 4 / 0
Регистрация: 26.04.2013
Сообщений: 124
06.06.2014, 06:21  [ТС] #4
C++ (Qt)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
using namespace std;
 
string FormatString(string , int , bool);       //функция для форматирования строки
 
class HumansClass                           // Абстрактный класс 
{
private:
    string Name, SurName, LastName, tel;            //храним данные о ФИО и номере телефонв
public:
    HumansClass(void);                              //конструктор
    virtual void Print(int, bool) = 0;          // Чистая (пустая) виртуальная функция.
    string GetName(void) { return Name;};           //получить имя
    void SetName(string _name) {Name = _name;};     //изменить имя
 
    string GetSurName(void) { return SurName;};     //получить отчество
    void SetSurName(string _surname) {SurName = _surname;};         //изменить отчество
 
    string GetLastName(void) { return LastName;};                   //получить фамилиию
    void SetLastName(string _lastname) {LastName = _lastname;};     //изменить фамилию
 
    string GetTel(void) { return tel;};                             //получить номер телефона
    void SetTel(string _tel) {tel = _tel;};                         //изменить номер телефона
 
    ~HumansClass(void);                         //деструктор
 
    HumansClass& operator=(const HumansClass& right);           //переопределение операции присваивания
};
Ну вот допустим если не делали "Переопределение оператора присваивания" что было бы?
0
Croessmah
Эксперт CЭксперт С++
13234 / 7506 / 846
Регистрация: 27.09.2012
Сообщений: 18,437
Записей в блоге: 3
Завершенные тесты: 1
06.06.2014, 06:22 #5
В данном примере хватит и сгенерированного оператора
0
frontez
4 / 4 / 0
Регистрация: 26.04.2013
Сообщений: 124
06.06.2014, 06:27  [ТС] #6
Croessmah, что это значит?
0
uglyPinokkio
326 / 229 / 41
Регистрация: 30.05.2014
Сообщений: 682
06.06.2014, 07:26 #7
Цитата Сообщение от frontez Посмотреть сообщение
Ну вот допустим если не делали "Переопределение оператора присваивания" что было бы?
Ничего. Этот класс не требует переопределения оператора присвоения, его члены правильно копируются дефолтным.
0
frontez
4 / 4 / 0
Регистрация: 26.04.2013
Сообщений: 124
06.06.2014, 07:27  [ТС] #8
А в каких случаях он был бы нужным?
0
Renji
1919 / 1317 / 298
Регистрация: 05.06.2014
Сообщений: 3,764
06.06.2014, 07:37 #9
Для чего нужно переопределение оператора присваивания?
C++
1
2
3
4
5
6
7
8
9
10
11
struct string
{
    string():text(new char[100]){}
    ~string(){delete[]text;}
    char*text;
};
int test()
{
    string text1,text2;
    text1=text2;
}
text1=text2 затирает text1.text. Никто больше об этом указателе не знает и память по нему не отчистит. Итого, утечка памяти. При уничтожении text1 и text2 их деструкторы ломятся отчищать одну и ту же область памяти text1.text (равное text2.text), стукаются лбами и программа красочно падает.
0
ValeryS
Модератор
6634 / 5041 / 466
Регистрация: 14.02.2011
Сообщений: 16,851
06.06.2014, 07:47 #10
Цитата Сообщение от frontez Посмотреть сообщение
Ну вот допустим если не делали "Переопределение оператора присваивания" что было бы?
вот именно в таком виде?
Цитата Сообщение от frontez Посмотреть сообщение
HumansClass& operator=(const HumansClass& right); * * * * * //переопределение операции присваивания
ошибка линковки "объявлен но не определен"
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
06.06.2014, 07:47
Привет! Вот еще темы с ответами:

Для чего нужно писать в int main() в скобках всякие args потом объявлять переменные, и прочее. Для чего если можно в сборках это все обьявлять. - C++
Для чего нужно писать в int main() в скобках всякие args потом объявлять переменные, и прочее. Для чего если можно в сборках это все...

Переопределение оператора "меньше" пользовательского типа для работы с set - C++
Понимаю, что чтобы хранить в set элементы некоторого класса, нужно переопределить оператор < для этого класса. Оператор переопределен,...

Насчет оператора присваивания - C++
Есть следующий код : #include <iostream> using namespace std; class Array { private: size_t mysize; int *mydata; ...

Перегрузка оператора присваивания - C++
Добрый вечер ! Нужна помощь по небольшому теоретико-практическому вопросу. Опять же вопрос по примеру из книги Шилдта С++ Базовый курс....


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

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
06.06.2014, 07:47
Ответ Создать тему
Опции темы

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