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

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

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

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

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

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

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

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

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

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

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

Перегрузка оператора присваивания - C++
Вот есть такой класс template<typename TT> class Matrix { public: ...

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Croessmah
Модератор
Эксперт CЭксперт С++
13063 / 7326 / 817
Регистрация: 27.09.2012
Сообщений: 18,085
Записей в блоге: 3
Завершенные тесты: 1
06.06.2014, 06:10     Для чего нужно переопределение оператора присваивания? #2
Цитата Сообщение от frontez Посмотреть сообщение
Для чего нужно переопределение оператора присваивания?
чтобы можно было писать a = b
uglyPinokkio
326 / 229 / 41
Регистрация: 30.05.2014
Сообщений: 682
06.06.2014, 06:18     Для чего нужно переопределение оператора присваивания? #3
Цитата Сообщение от frontez Посмотреть сообщение
Для чего нужно переопределение оператора присваивания?
Если объект содержит указатель, то тупое присвоение чревато
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);           //переопределение операции присваивания
};
Ну вот допустим если не делали "Переопределение оператора присваивания" что было бы?
Croessmah
Модератор
Эксперт CЭксперт С++
13063 / 7326 / 817
Регистрация: 27.09.2012
Сообщений: 18,085
Записей в блоге: 3
Завершенные тесты: 1
06.06.2014, 06:22     Для чего нужно переопределение оператора присваивания? #5
В данном примере хватит и сгенерированного оператора
frontez
4 / 4 / 0
Регистрация: 26.04.2013
Сообщений: 124
06.06.2014, 06:27  [ТС]     Для чего нужно переопределение оператора присваивания? #6
Croessmah, что это значит?
uglyPinokkio
326 / 229 / 41
Регистрация: 30.05.2014
Сообщений: 682
06.06.2014, 07:26     Для чего нужно переопределение оператора присваивания? #7
Цитата Сообщение от frontez Посмотреть сообщение
Ну вот допустим если не делали "Переопределение оператора присваивания" что было бы?
Ничего. Этот класс не требует переопределения оператора присвоения, его члены правильно копируются дефолтным.
frontez
4 / 4 / 0
Регистрация: 26.04.2013
Сообщений: 124
06.06.2014, 07:27  [ТС]     Для чего нужно переопределение оператора присваивания? #8
А в каких случаях он был бы нужным?
Renji
1878 / 1276 / 290
Регистрация: 05.06.2014
Сообщений: 3,642
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), стукаются лбами и программа красочно падает.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
06.06.2014, 07:47     Для чего нужно переопределение оператора присваивания?
Еще ссылки по теме:

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

Перегрузка оператора присваивания - C++
мне надо было реализовать конструкторы, деструктор, оператор присваивания, функции ввода / вывода объектов; кто сможет дописать...

Перегрузка оператора присваивания - C++
Добрый вечер. Есть задание: Нужно так перегрузить оператор =, чтобы можно было элементу одного класса, присваивать значение элемента...

Перегрузка оператора присваивания - C++
Доброго времени суток! Возник вопрос по поводу перегрузки оператора присваивания. Пример перегрузки по канону: class Integer { ...


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

Или воспользуйтесь поиском по форуму:
ValeryS
Модератор
6552 / 5018 / 463
Регистрация: 14.02.2011
Сообщений: 16,739
06.06.2014, 07:47     Для чего нужно переопределение оператора присваивания? #10
Цитата Сообщение от frontez Посмотреть сообщение
Ну вот допустим если не делали "Переопределение оператора присваивания" что было бы?
вот именно в таком виде?
Цитата Сообщение от frontez Посмотреть сообщение
HumansClass& operator=(const HumansClass& right); * * * * * //переопределение операции присваивания
ошибка линковки "объявлен но не определен"
Yandex
Объявления
06.06.2014, 07:47     Для чего нужно переопределение оператора присваивания?
Ответ Создать тему
Опции темы

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