Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.86/7: Рейтинг темы: голосов - 7, средняя оценка - 4.86
быдлокодер
 Аватар для kravam
1724 / 911 / 106
Регистрация: 04.06.2008
Сообщений: 5,705

Есть производный класс и базовый; при чём производный использует только ЧАСТЬ ресурсов базового, правильно ли это?

05.06.2011, 17:36. Показов 1611. Ответов 8
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Ну то есть базовый класс A, с полями, допустим, a, b, c, d. И я проектирую производный класс B и я железно знаю, что он будет использовать только поле a и b (c и d будет использовать другой производный класс C). Вот не знаю, правильно ли это. Ещё до реализации не дошло, вот думаю, может правильнее написать функции к классу A (вместо производных классов); и писать
C++
1
A.f ();
вместо
C++
1
B b;
Наверное, я могу сделать и то и другое, но хотелось бы сразу вставать на правильный путь. Это не С всё-таки. Спасибо.
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
05.06.2011, 17:36
Ответы с готовыми решениями:

Есть базовый и производный класс, в базовом определена функция, необходимо её объявить в производном!
Как-то так, что ли: class x { public: void f_0 (){}; }; class y: public x { public: //Тут у меня пойдёт...

Разработать производный от абстрактного класса Figure класс и класс, производный от производного
Разработать базовый абстрактный класс Figure с пустым виртуальным методом print для вывода в дальнейшем полной информации об объекте: ...

Базовый класс и производный...
Есть class A. У него есть функция protected foo(); Есть класс наследник B (class B: public A). В классе-наследнике B есть функция g(),...

8
 Аватар для pito211
187 / 174 / 18
Регистрация: 22.03.2010
Сообщений: 612
05.06.2011, 18:08
Цитата Сообщение от kravam Посмотреть сообщение
правильнее написать функции к классу A (вместо производных классов)
какая задача? наследование надо применять там где это логично.
Цитата Сообщение от kravam Посмотреть сообщение
я проектирую производный класс B и я железно знаю, что он будет использовать только поле a и b (c и d будет использовать другой производный класс C)
у класса B будут все поля класса А. Свободно пользоваться можно будет полями protected и public. Модификатор наследования полей сохраняется для следующих классов, производных уже от В(если class B : public A), но его можно ужесточить например
C++
1
2
private:
   using A::f();
тогда в классах производных от В уже нельзя будет в полной мере поюзать f
0
быдлокодер
 Аватар для kravam
1724 / 911 / 106
Регистрация: 04.06.2008
Сообщений: 5,705
05.06.2011, 18:16  [ТС]
Я это всё знаю. Я говорю, классу B не понадобятся поля c и d. Надо ли проектировать класс B или проще создать функцию f- метод класса А?
0
 Аватар для pito211
187 / 174 / 18
Регистрация: 22.03.2010
Сообщений: 612
05.06.2011, 18:20
ну ты сам смотри. Сложно что-то сказать на абстрактном примере
0
быдлокодер
 Аватар для kravam
1724 / 911 / 106
Регистрация: 04.06.2008
Сообщений: 5,705
05.06.2011, 18:22  [ТС]
Я думал, может какие рекомендации методические существуют.
0
 Аватар для lemegeton
4903 / 2696 / 921
Регистрация: 29.11.2010
Сообщений: 5,783
05.06.2011, 21:21
Методическое указание тут одно: Use common sense. Я могу представить себе пару ситуаций, где дочерний класс использует не весь функционал родительского (на-гора -- очередь, наследуемая от дека, целое положительное число как дочерний класс "числа"), но в целом, конечно, это повод критично посмотреть на свое дерево классов.
0
2022 / 1621 / 489
Регистрация: 31.05.2009
Сообщений: 3,005
06.06.2011, 13:10
Цитата Сообщение от kravam Посмотреть сообщение
Ну то есть базовый класс A, с полями, допустим, a, b, c, d. И я проектирую производный класс B и я железно знаю, что он будет использовать только поле a и b (c и d будет использовать другой производный класс C). Вот не знаю, правильно ли это.
Нет. Так сложно сказать конечно, но думаю имеет смысл оставить в A только a и b. B наследовать от A напрямую, а C через промежуточный класс с полями c и d. В общем, идея думаю понятена.
0
3014 / 1452 / 262
Регистрация: 16.03.2008
Сообщений: 6,471
Записей в блоге: 2
06.06.2011, 13:27
Цитата Сообщение от kravam Посмотреть сообщение
Я думал, может какие рекомендации методические существуют.
Имхо. Надо смотреть, а нет ли класса Q, который использует другой набор из этих методов, использует ли эти методы сам базовый класс. Если использует только один производный класс - то надо спускать эти методы туда. Если используют несколько производных классов, но не все. Тут уже надо смотреть на задачу, возможно стоит реализовать промежуточный.
0
Эксперт С++
 Аватар для CyBOSSeR
2348 / 1721 / 149
Регистрация: 06.03.2009
Сообщений: 3,675
06.06.2011, 13:35
kravam, самая простая рекомендация: если B является A - наследуй, нет - не наследуй. Нужно исходить не из внутреннего устройства, а из того что чем является.
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
06.06.2011, 13:35
Помогаю со студенческими работами здесь

Создать базовый и производный класс
Базовый класс РАБОТНИК с член-данными ФИО, идентификационный код, возраст. Производный класс ИНЖЕНЕР с член-данными специальность, месячный...

Указатель на базовый класс и на производный
Пытаюсь разобраться с классами и наследованием. Сама эта задача из Дейтела "Как программировать на C++" Есть базовый класс...

Производный класс не видит перегруженную операцию базового класса
Подскажите пожалуйста, почему производный класс, а именно его объект не видит перегруженную операцию, в данном случае это префиксные...

Базовый класс Complex и производный класс для реализации квадратных матриц
1) Создайте базовый класс Complex (комплексное число) для реализации комплексных чисел в алгебраической форме и основных операций с ними:...

Создать базовый класс Pair и производный LongNumber
Создать класс Pair (пара целых чисел); определить методы изменения по-лей и операцию сложения пар (а, b) + (с, d) = (а + b, с + d)....


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

Или воспользуйтесь поиском по форуму:
9
Ответ Создать тему
Новые блоги и статьи
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
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru