Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.75/4: Рейтинг темы: голосов - 4, средняя оценка - 4.75
4 / 4 / 0
Регистрация: 26.04.2013
Сообщений: 124

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

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

Студворк — интернет-сервис помощи студентам
C++ (Qt)
1
    HumansClass& operator=(const HumansClass& right);   //переопределение операции присваивания
Для чего нужно переопределение оператора присваивания?
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
06.06.2014, 06:02
Ответы с готовыми решениями:

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

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

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

9
Неэпический
 Аватар для Croessmah
18149 / 10731 / 2067
Регистрация: 27.09.2012
Сообщений: 27,035
Записей в блоге: 1
06.06.2014, 06:10
Цитата Сообщение от frontez Посмотреть сообщение
Для чего нужно переопределение оператора присваивания?
чтобы можно было писать a = b
0
327 / 230 / 55
Регистрация: 30.05.2014
Сообщений: 682
06.06.2014, 06:18
Цитата Сообщение от frontez Посмотреть сообщение
Для чего нужно переопределение оператора присваивания?
Если объект содержит указатель, то тупое присвоение чревато
0
4 / 4 / 0
Регистрация: 26.04.2013
Сообщений: 124
06.06.2014, 06:21  [ТС]
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
18149 / 10731 / 2067
Регистрация: 27.09.2012
Сообщений: 27,035
Записей в блоге: 1
06.06.2014, 06:22
В данном примере хватит и сгенерированного оператора
0
4 / 4 / 0
Регистрация: 26.04.2013
Сообщений: 124
06.06.2014, 06:27  [ТС]
Croessmah, что это значит?
0
327 / 230 / 55
Регистрация: 30.05.2014
Сообщений: 682
06.06.2014, 07:26
Цитата Сообщение от frontez Посмотреть сообщение
Ну вот допустим если не делали "Переопределение оператора присваивания" что было бы?
Ничего. Этот класс не требует переопределения оператора присвоения, его члены правильно копируются дефолтным.
0
4 / 4 / 0
Регистрация: 26.04.2013
Сообщений: 124
06.06.2014, 07:27  [ТС]
А в каких случаях он был бы нужным?
0
2784 / 1937 / 570
Регистрация: 05.06.2014
Сообщений: 5,602
06.06.2014, 07:37
Для чего нужно переопределение оператора присваивания?
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
Модератор
Эксперт по электронике
8981 / 6748 / 921
Регистрация: 14.02.2011
Сообщений: 23,870
06.06.2014, 07:47
Цитата Сообщение от frontez Посмотреть сообщение
Ну вот допустим если не делали "Переопределение оператора присваивания" что было бы?
вот именно в таком виде?
Цитата Сообщение от frontez Посмотреть сообщение
HumansClass& operator=(const HumansClass& right); * * * * * //переопределение операции присваивания
ошибка линковки "объявлен но не определен"
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
06.06.2014, 07:47
Помогаю со студенческими работами здесь

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

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

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

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

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


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

Или воспользуйтесь поиском по форуму:
10
Ответ Создать тему
Новые блоги и статьи
Ритм жизни
kumehtar 27.02.2026
Иногда приходится жить в ритме, где дел становится всё больше, а вовлечения в происходящее — всё меньше. Плотный график не даёт вниманию закрепиться ни на одном событии. Утро начинается с быстрых,. . .
SDL3 для Web (WebAssembly): Сборка библиотек SDL3 и Box2D из исходников с помощью CMake и Emscripten
8Observer8 27.02.2026
Недавно вышла версия SDL 3. 4. 2 библиотеки SDL3. На странице официальной релиза доступны исходники, готовые DLL (для x86, x64, arm64), а также библиотеки для разработки под Android, MinGW и Visual. . .
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование . \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json> Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом. # Check if. . .
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так: https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347 Основана на STM32F303RBT6. На борту пять. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru