29 / 24 / 5
Регистрация: 15.10.2019
Сообщений: 268
|
|||||||||||||||||||||||||||||||
1 | |||||||||||||||||||||||||||||||
оператор присвоение и конструктор копии08.10.2022, 17:08. Показов 702. Ответов 9
Метки нет (Все метки)
класс Object родительский, в нем массив, который хранит информацию какие операции совершались с объектами класса. Так же в нем должны быть конструктор копирования и оператор присвоения. Ну и от этого класса наследуются класс Complex, который описывает комплексные числа и позволяет производить операции над ними.
так вот, сделал в классе Object и конструктор копии и оператор присваивания. И гдет накосячил. Потому что когда я пишу
зато когда пишу
так же, в object, через статические параметры я веду подсчет кол-ва созданный объектов, и каждому объекту присваиваю ID. В моем понимание, когда работает конструктор копирования, то кол-во объектов должно увеличиваться. А когда оператор присвоения работает, то кол-во объектов то же, т.к. мы уже созданному ранне объекту присваеваем значения другого объекта. Но у меня тут вобще каша. Получается что при работе оператора присвоения кол-во созданных ув +2.
При чем,
может ли быть проблема где нибудь в моих перегруженных операторах для класса Complex? Добавлено через 47 минут возможно, из за того что оператор присвоения ждет что ему будут давать объект Комплекс
Добавлено через 7 минут но все равно не понимаю почему
0
|
08.10.2022, 17:08 | |
Ответы с готовыми решениями:
9
Почему когда возвращается об'єкт создается новая копия но она создается через конструктор а не через конструктор копии? Конструктор копии конструктор копии Конструктор копии конструктор копии |
4866 / 2664 / 914
Регистрация: 29.11.2010
Сообщений: 5,747
|
|
08.10.2022, 18:05 | 2 |
Это называется copy elision и регламентируется в стандарте.
В частности в вашем случае: Добавлено через 1 минуту В референсах к языку можно найти более подробное описание этого процесса. Где поведение описывается несколько более жоское:
0
|
29 / 24 / 5
Регистрация: 15.10.2019
Сообщений: 268
|
|
08.10.2022, 18:09 [ТС] | 3 |
lemegeton, получается, что это как бы нормально все? А то у меня все равно огромные сомнения в правильности моего кода
0
|
4866 / 2664 / 914
Регистрация: 29.11.2010
Сообщений: 5,747
|
|
08.10.2022, 18:56 | 4 |
Сообщение было отмечено billy121 как решение
Решение
Поведение, когда в случае
Не вызываются конструкторы копирования -- стандартное. Добавлено через 47 секунд Пожалуй, логика ваших конструкторов не учитывает такое поведение.
1
|
29 / 24 / 5
Регистрация: 15.10.2019
Сообщений: 268
|
|
08.10.2022, 19:01 [ТС] | 5 |
lemegeton, Ваш ответ звучит очень воодушевляющим. А то я уже просидел прилично часов с данным вопросом, гугля и пытаясь разобраться. Спасибо Вам!
0
|
4866 / 2664 / 914
Регистрация: 29.11.2010
Сообщений: 5,747
|
|
08.10.2022, 19:05 | 6 |
0
|
19409 / 10028 / 2443
Регистрация: 30.01.2014
Сообщений: 17,678
|
|
08.10.2022, 19:24 | 7 |
Не совсем корректен этот момент. По стандартной семантике оператор присваивания должен вернуть ссылку, а у вас он возвращает объект.
Собственно это скорее всего и является причиной описанных вами в этой цитате явлений.
1
|
29 / 24 / 5
Регистрация: 15.10.2019
Сообщений: 268
|
|
08.10.2022, 19:33 [ТС] | 8 |
DrOffset, типо нужно вернуть просто this, а не *this?
0
|
19409 / 10028 / 2443
Регистрация: 30.01.2014
Сообщений: 17,678
|
|||||||||||
08.10.2022, 19:35 | 9 | ||||||||||
Сообщение было отмечено billy121 как решение
Решение
Нет...
У вас написано:
1
|
29 / 24 / 5
Регистрация: 15.10.2019
Сообщений: 268
|
|
08.10.2022, 21:54 [ТС] | 10 |
DrOffset, хорошо, я позже попробую. Спасибо за совет!
Добавлено через 2 часа 15 минут DrOffset, ты просто лучший! во всей этой моей писанине нашел ошибку! Все исправил, все заработало, как должно было))) Спасибо тебе, ЧЕЛОВЕЧИЩЕ!!!
0
|
08.10.2022, 21:54 | |
08.10.2022, 21:54 | |
Помогаю со студенческими работами здесь
10
Конструктор копии и операторы Конструктор копии в Классах Не вызывается конструктор копии Для шаблонного класса перегрузить оператор присваивания, copy-конструктор, объекты cin и cout, оператор * Приоритетная очередь и конструктор копии Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи | |||||
Как запретить подсветку выделенного текста с помощью CSS
InfoMaster 20.01.2025
Подсветка текста при выделении является стандартным поведением браузера, которое не всегда соответствует дизайнерским решениям или функциональным требованиям веб-приложения.
Выделение текста может. . .
|
Как выполнить другую программу или системную команду из Python
InfoMaster 20.01.2025
Python предоставляет мощные инструменты для выполнения системных команд и управления внешними процессами, что делает его идеальным выбором для автоматизации различных задач системного. . .
|
Как узнать директорию bash-скрипта из самого bash-скрипта
InfoMaster 20.01.2025
При разработке bash-скриптов одной из важных задач является определение директории, в которой находится исполняемый скрипт. Это критически важно для корректной работы с файлами, загрузки конфигураций. . .
|
В чем разница между let и var в JavaScript
InfoMaster 20.01.2025
JavaScript прошел длинный путь эволюции с момента своего создания в 1995 году. Одним из важнейших аспектов развития языка стало совершенствование механизмов объявления и управления переменными. . . .
|
Эффективная работа со строками в Go
InfoMaster 20.01.2025
Язык программирования Go предлагает уникальный подход к работе со строками, который существенно отличается от многих других языков программирования. В Go строки представляют собой неизменяемые. . .
|
Как проверить, что отображение (map) содержит ключ в Go
InfoMaster 20.01.2025
Отображения (maps) в языке программирования Go представляют собой мощные структуры данных, которые позволяют хранить пары ключ-значение и обеспечивают быстрый доступ к данным по уникальным. . .
|
Как организовать домашнее хранилище фильмов с общим доступом для всей семьи
InfoMaster 20.01.2025
Преимущества домашнего медиасервера
В современном мире, где цифровой контент стал неотъемлемой частью нашей жизни, организация домашнего медиасервера становится все более актуальной задачей. . . .
|
Перспективы развития жестких дисков: есть ли у них будущее?
InfoMaster 20.01.2025
История и эволюция жестких дисков
История развития жестких дисков начинается в 1956 году, когда компания IBM представила первое устройство для хранения данных на магнитных пластинах - IBM 350. . .
|
Распознавание изображений (компьютерное зрение) на C++
InfoMaster 20.01.2025
Введение в компьютерное зрение и основы работы с изображениями
Компьютерное зрение представляет собой одну из наиболее динамично развивающихся областей информационных технологий, позволяющую. . .
|
Какой язык программирования лучший для разработки нейронных сетей
InfoMaster 20.01.2025
В современном мире технологий искусственные нейронные сети становятся неотъемлемой частью множества инновационных решений, от распознавания речи до автоматического управления транспортными. . .
|
Как подключить JavaScript файл в другом JavaScript файле
InfoMaster 20.01.2025
В современной веб-разработке организация кодовой базы играет ключевую роль в создании масштабируемых и поддерживаемых приложений. Модульность и правильное структурирование кода стали неотъемлемыми. . .
|
Как откатить изменения в исходниках, не внесенные в Git
InfoMaster 20.01.2025
При работе с системой контроля версий Git разработчики часто сталкиваются с необходимостью отменить внесенные изменения в исходном коде. Особенно актуальной становится ситуация, когда изменения еще. . .
|