|
0 / 0 / 0
Регистрация: 04.03.2020
Сообщений: 30
|
||||||
Наследование, конструкторы и operator+-*/=07.07.2023, 13:34. Показов 686. Ответов 9
Метки нет (Все метки)
2. почему тогда не работает b3=b1+b2 (ведь выражение возвращает также, как и operator«=» объект базового класса. Конструктора в производном нет, но ведь в первом случае работает итак) 3. operator+ я так понимаю? унаследовать тоже нельзя без добавлений (типа конструктора преобразования или еще чего-то такого типа using, this), потому что возвращает базовый объект Именно в этом виде хочется понять, как код работает 4. вообще интересует инфо, наследуются ли: Конструкторы – я понял, что нет (но базовый конструктор, если ничего не переопределено, компилятор предоставляет) Constr b():Constr a(){} – не считается – это не наследование, а вызов Operator = не наследуется, но вот в примере вопрос выше и возник (можно подумать, что компилятор через дефолтный присваивает, но почему тогда строка-индикатор из базового выходит) Operator +-*/ не наследуется, по идее (из-за разности возвращаемых типов) Деструкторы – не наследуются Это инфо, которое удалось найти в инете. Буду признателен, если кто-то проконсультирует
0
|
||||||
| 07.07.2023, 13:34 | |
|
Ответы с готовыми решениями:
9
решение задачи Конструкторы и деструкторы, Наследование, Множественное наследование. Полиморфизм
наследование. конструкторы |
|
19500 / 10105 / 2461
Регистрация: 30.01.2014
Сообщений: 17,816
|
|||
| 07.07.2023, 13:44 | |||
b свой собственный сгенерированный компилятором operator=, он и работает (и он работает в данном случае путем вызова operator= для подобъекта базового класса, т.е. для a).b, а возвращаете вы в operator+ - a. В первом случае к b присваивалось b, а во втором к b присваивается a. В этом разница.
2
|
|||
|
631 / 526 / 104
Регистрация: 05.08.2022
Сообщений: 2,810
|
|
| 07.07.2023, 13:47 | |
|
1
|
|
|
19500 / 10105 / 2461
Регистрация: 30.01.2014
Сообщений: 17,816
|
|||||||
| 07.07.2023, 13:56 | |||||||
Сообщение было отмечено Valdemarych как решение
Решение
Кроме того, проблема будет из-за отсутствия const в параметре оператора=, потому что operator+ возвращает у вас временный объект, который не привязывается к неконстантной ссылке.
Минимальные исправления для вашего кода: Кликните здесь для просмотра всего текста
Книгу читайте.Ключевая тема для понимания: "Области видимости и сокрытие имен"
0
|
|||||||
|
0 / 0 / 0
Регистрация: 04.03.2020
Сообщений: 30
|
||
| 07.07.2023, 14:40 [ТС] | ||
|
А есть возможность уточнить, в этих утверждениях я прав?
0
|
||
|
19500 / 10105 / 2461
Регистрация: 30.01.2014
Сообщений: 17,816
|
||
| 07.07.2023, 14:49 | ||
|
Деструкторы и конструкторы (кроме явного указания через С++11-фичу inherited constructors) не наследуются. Все остальное - это в основном про сокрытие, а не про наследование.
0
|
||
|
0 / 0 / 0
Регистрация: 04.03.2020
Сообщений: 30
|
|
| 07.07.2023, 14:49 [ТС] | |
|
0
|
|
|
0 / 0 / 0
Регистрация: 18.07.2021
Сообщений: 12
|
|
| 07.07.2023, 17:22 | |
|
b b1=4; - вызывает конструктор b(int t):a(t){}
b b2; - создаёт объект класса b b2=b1; - для классов, которые не используют new хватает operator= по умолчанию (тема в учебнике: специальные ф-ии-члены) b2.s(); - s() открытый метод базового класса, наследуется как открытый метод производного класса, с этим okey b b3; - создаёт объект класса b b3=b1+b2; - operator+ для класса b не определён Насчёт специальных ф-ий членов: спец ф-ии-члены определённые по умолчанию в неявном виде вызывают спец ф-ии-члены базового класса. Не наследуются методы конструктора, деструктор, операция присваивания и дружественные функции.
0
|
|
|
Вездепух
12942 / 6809 / 1821
Регистрация: 18.10.2014
Сообщений: 17,234
|
||||
| 07.07.2023, 18:02 | ||||
|
0
|
||||
|
19500 / 10105 / 2461
Регистрация: 30.01.2014
Сообщений: 17,816
|
||||
| 07.07.2023, 21:17 | ||||
|
Лафоре известная книжка с огромным количеством как опечаток так и фактических ошибок. Иной раз такую чушь пишет автор, что закрадываются сомнения, а понимает ли он вообще преподносимый материал. Примеры: https://www.cyberforum.ru/post13748228.html Неявное преобразование с использованием конструктора с одним параметром
0
|
||||
| 07.07.2023, 21:17 | |
|
Помогаю со студенческими работами здесь
10
Наследование, конструкторы Наследование классов и конструкторы Наследование, конструкторы с параметрами Делегирующие конструкторы и наследование Конструкторы при множественном наследование Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Как дизайн сайта влияет на конверсию: 7 решений, которые реально повышают заявки
Neotwalker 08.03.2026
Многие до сих пор воспринимают дизайн сайта как “красивую оболочку”. На практике всё иначе: дизайн напрямую влияет на то, оставит человек заявку или уйдёт через несколько секунд.
Даже если у вас. . .
|
Модульная разработка через nuget packages
DevAlt 07.03.2026
Сложившийся в . Net-среде способ разработки чаще всего предполагает
монорепозиторий в котором находятся все исходники.
При создании нового решения, мы просто добавляем нужные проекты
и имеем. . .
|
Модульный подход на примере F#
DevAlt 06.03.2026
В блоге дяди Боба наткнулся на такое определение:
В этой книге («Подход, основанный на вариантах использования») Ивар утверждает,
что архитектура программного обеспечения — это
структуры,. . .
|
Управление камерой с помощью скрипта OrbitControls.js на Three.js: Вращение, зум и панорамирование
8Observer8 05.03.2026
Содержание блога
Финальная демка в браузере работает на Desktop и мобильных браузерах. Итоговый код: orbit-controls-threejs-js. zip. Сканируйте QR-код на мобильном. Вращайте камеру одним пальцем,. . .
|
|
SDL3 для Web (WebAssembly): Синхронизация спрайтов SDL3 и тел Box2D
8Observer8 04.03.2026
Содержание блога
Финальная демка в браузере. Итоговый код: finish-sync-physics-sprites-sdl3-c. zip
На первой гифке отладочные линии отключены, а на второй включены:. . .
|
SDL3 для Web (WebAssembly): Идентификация объектов на Box2D v3 - использование userData и событий коллизий
8Observer8 02.03.2026
Содержание блога
Финальная демка в браузере. Итоговый код: finish-collision-events-sdl3-c. zip Сканируйте QR-код на мобильном и вы увидите, что появится джойстик для управления главным героем.
. . .
|
Реалии
Hrethgir 01.03.2026
Нет, я не закончил до сих пор симулятор. Эта задача сложнее. Не получилось уйти в плавсостав, но оно и к лучшему, возможно. Точнее получалось - но сварщиком в палубную команду, а это значит, в моём. . .
|
Ритм жизни
kumehtar 27.02.2026
Иногда приходится жить в ритме, где дел становится всё больше, а вовлечения в происходящее — всё меньше. Плотный график не даёт вниманию закрепиться ни на одном событии. Утро начинается с быстрых,. . .
|