|
901 / 478 / 93
Регистрация: 10.06.2014
Сообщений: 2,700
|
|
А где вы используете private наследование?30.06.2017, 19:15. Показов 5143. Ответов 30
Метки нет (Все метки)
Насколько я знаю то при приватном наследовании наследник ничего от родительского класса не наследует.
Тогда зачем оно нужно? Ничего же не наследуется. На мой взгляд это может понадобится если нужно по определенным причинам выдать один тип за другой за счёт базового. Но хотелось бы узнать мнение более опытных
0
|
|
| 30.06.2017, 19:15 | |
|
Ответы с готовыми решениями:
30
А где вы используете private наследование?
Наследование private |
|
Заблокирован
|
|
| 30.06.2017, 19:18 | |
|
1
|
|
|
Ушел с форума
|
|
| 30.06.2017, 19:30 | |
Сообщение было отмечено Undisputed как решение
Решение
См. Boost.NonCopyable, например.
Это класс, наследуясь от которого, мы запрещаем копирование объекта. Здесь наследование как раз должно быть приватным, иначе потенциальные наследники класса могли бы получить доступ к запрещенным функциям... noncopyable http://www.boost.org/doc/libs/... yable.html Добавлено через 15 секунд См. Boost.NonCopyable, например. Это класс, наследуясь от которого, мы запрещаем копирование объекта. Здесь наследование как раз должно быть приватным, иначе потенциальные наследники класса могли бы получить доступ к запрещенным функциям... noncopyable http://www.boost.org/doc/libs/... yable.html
3
|
|
|
901 / 478 / 93
Регистрация: 10.06.2014
Сообщений: 2,700
|
|
| 30.06.2017, 21:23 [ТС] | |
|
daun-autist,
Это потому что ничего из базового класса нельзя будет вызвать что либо? А как насчёт трюков в отношении метапрограммирования? Убежденный, Там класс вроде пустой. Запрещение копирования происходит за счёт того что конструктор родительского класса недоступен?
0
|
|
|
Форумчанин
8216 / 5047 / 1437
Регистрация: 29.11.2010
Сообщений: 13,453
|
|
| 30.06.2017, 21:46 | |
|
1
|
|
|
Заблокирован
|
||
| 30.06.2017, 22:01 | ||
|
Почему здесь не запрещено задавать вопросы, на которые уже есть ответы?
Добавлено через 7 минут
1
|
||
|
901 / 478 / 93
Регистрация: 10.06.2014
Сообщений: 2,700
|
|||||||
| 01.07.2017, 11:42 [ТС] | |||||||
|
MrGluck, daun-autist,
Спасибо за помощь Добавлено через 13 часов 37 минут Убежденный, Разобрался вроде. Просто запрещается копирование родительского класса и все, поэтому с помощью конструктора по умолчанию копировать объект не получается(да и создать тоже)... daun-autist, А откуда вы взяли такое правило? Ваше утверждение судя по всему не действительно
0
|
|||||||
|
Неэпический
|
|
| 01.07.2017, 12:55 | |
|
Undisputed, выше ссылка на isocpp faq.
Вы ппутаете ООП концепции и C++. Мешаете как хотите их. Наследование в C++ и "отношения" классов в ООП это как бэ разные вещи. Одно может наследоваться от другого, но не удовлетворять требованиям "является". Вы не можете использовать bar так, как будто это foo, т.к. наследование приватное. Только сам класс bar может работать так, как будто он foo, но внешний код так уже работать не может, так что никакого is-a здесь нет. Зато приватное наследование вполне подходит под композицию (has-a).
1
|
|
|
901 / 478 / 93
Регистрация: 10.06.2014
Сообщений: 2,700
|
|
| 01.07.2017, 13:50 [ТС] | |
|
Croessmah
Ну если говорить чисто о терминологии и определениях то да, я с вами полностью согласен. Под понятием "является" я понимал именно возможность определить наличие родительского класса в дереве наследования независимо от типа наследования.
0
|
|
| 01.07.2017, 21:55 | |
|
Не по теме: private-наследование это отношение "содержит", обычно...
0
|
|
|
8973 / 4319 / 960
Регистрация: 15.11.2014
Сообщений: 9,760
|
|
| 01.07.2017, 22:40 | |
|
0
|
|
|
|
|
| 02.07.2017, 10:41 | |
|
Плюс еще одно применение private наследования - у базового класса нет виртуального деструктора и мы хотим запретить приводить указатель на дочерний класс к указателю на базовый (чтоб не было проблем с вызовом деструктора). На практике я 1 раз в жизни так делал)
0
|
|
|
8973 / 4319 / 960
Регистрация: 15.11.2014
Сообщений: 9,760
|
|
| 02.07.2017, 10:57 | |
|
0
|
|
|
901 / 478 / 93
Регистрация: 10.06.2014
Сообщений: 2,700
|
|
| 02.07.2017, 12:41 [ТС] | |
|
Avazart,
Может же быть так что нам не нужен экземпляр базового класса(а композиция требует этого), и полиморфизм тоже не нужен, но при этом нескольким наследникам требуется функциональность этого базового класса т.к он для них общий. Например для реализации инкапсуляции часто используются методы setSomething, getSomething и чтоб не повторять эти методы во всех классах где нужен функционал этого Something-a очень даже удобно выделить сеттер и геттер в отдельный класс и наследовать эти методы
0
|
|
|
223 / 213 / 80
Регистрация: 26.04.2013
Сообщений: 972
|
||
| 02.07.2017, 12:41 | ||
= delete;
0
|
||
|
901 / 478 / 93
Регистрация: 10.06.2014
Сообщений: 2,700
|
|
| 02.07.2017, 12:49 [ТС] | |
|
mat_for_c,
Думаю все дело в том что у программистов есть хорошая привычка реализовывать заранее один раз часто используемый функционал и использовать его там где он нужен тем самым создав некий стандарт кодирования и удобство... То есть достаточно просто отнаследоваться от уже готового кода и не писать одно и то же по 100 раз. Да и до с++11 delete для методов вроде и нет. Думаю как то так... Но посмотрим что скажет Убежденный
0
|
|
|
|
|||
| 02.07.2017, 12:52 | |||
|
А когда каждый раз новая задача приходится писать новый код, переписывать старый или искать другую библиотеку.
0
|
|||
| 02.07.2017, 12:52 | |
|
Помогаю со студенческими работами здесь
20
private наследование и виртуальный метод Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Ритм жизни
kumehtar 27.02.2026
Иногда приходится жить в ритме, где дел становится всё больше, а вовлечения в происходящее — всё меньше. Плотный график не даёт вниманию закрепиться ни на одном событии. Утро начинается с быстрых,. . .
|
SDL3 для Web (WebAssembly): Сборка SDL3 и Box2D из исходников с помощью CMake и Emscripten
8Observer8 27.02.2026
Недавно вышла версия 3. 4. 2 библиотеки SDL3. На странице официальной релиза доступны исходники, готовые DLL (для x86, x64, arm64), а также библиотеки для разработки под Android, MinGW и Visual Studio. . . .
|
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
«Знание-Сила»
«Время-Деньги»
«Деньги -Пуля»
|