С Новым годом! Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.62/21: Рейтинг темы: голосов - 21, средняя оценка - 4.62
 Аватар для pizurok
77 / 69 / 20
Регистрация: 05.05.2013
Сообщений: 3,810

Вопросы по наследованию

20.06.2013, 12:43. Показов 4876. Ответов 68
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Вопрос ещё по конструкторам

Допустим есть система классов
C++
1
2
3
4
5
6
7
8
9
10
class A
{
    public:
         A() {}
};
class B: public A
{
    public:
         B() {}
};
Мы создаем экземпляр
C++
1
B b_obj;
Сколько будет фактически экземпляров? 1 B? или 2: A и B?
Или экземпляр A будет создан только если конструктор B вызывает конструктор A?
C++
1
B() : A() {}
И ещё вопрос. Предположим два экземпляра будет если конструктор B вызывает конструктор A
Пусть есть открытая переменная в A
C++
1
2
public:
    int a;
При обращении из экземпляра
C++
1
b_obj.a = 0;
Мы обратимся к a из экземпляра B или из экземпляра A?
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
20.06.2013, 12:43
Ответы с готовыми решениями:

По наследованию
Решил заняться паттернами проектирования и возник вопрос. Допустим есть абстрактный класс public abstract class First { ...

вопрос по наследованию
начал изучать ООП в РНР. нужно уточнение. имеется класс статей Aticle и дочерний класс NewsArticle, они отличаются тем что у второго...

Вопрос по наследованию
Вопрос насчёт передачи аргументов в конструктор базового класса(создания временного объекта), а именно почему у меня это не выходит и где у...

68
Форумчанин
Эксперт CЭксперт С++
 Аватар для MrGluck
8216 / 5047 / 1437
Регистрация: 29.11.2010
Сообщений: 13,453
20.06.2013, 15:02
Студворк — интернет-сервис помощи студентам
pizurok, отнюдь, несмотря на все ваши "мне википедия помогла больше, чем все вы тут, бабки собравшиеся поболтать о том о сем", "никто ничего мне так и не сказал путного" я, как и другие участники форума пытаются помочь вам в решении вашей проблемы. Только вот вы не умеете однозначно формулировать вопросы. Как видите, неправильно (не так, как вы ожидали) вас понял не только я, но и все остальные. На конкретный вопрос вам дали бы конкретный ответ. Это вы, не понимая базовых вещей тычетесь в "не надо меня учить, я все сам знаю", при том, что всем свойственно ошибаться и заблуждаться даже в очевидных вещах.

Добавлено через 1 минуту
Цитата Сообщение от pizurok Посмотреть сообщение
Важно что они сохраняют уровни доступа к данным внутри себя
это уже совершенно другой вопрос, не находите?
0
5499 / 4894 / 831
Регистрация: 04.06.2011
Сообщений: 13,587
20.06.2013, 15:06
Цитата Сообщение от pizurok Посмотреть сообщение
Важно что они сохраняют уровни доступа к данным внутри себя
Смотря кто к кому. Прозводный к базовому и к себе - да. Базовый к производному и к себе - нет.
0
 Аватар для pizurok
77 / 69 / 20
Регистрация: 05.05.2013
Сообщений: 3,810
20.06.2013, 15:06  [ТС]
Цитата Сообщение от MrGluck Посмотреть сообщение
pizurok, отнюдь, несмотря на все ваши "мне википедия помогла больше, чем все вы тут, бабки собравшиеся поболтать о том о сем", "никто ничего мне так и не сказал путного" я, как и другие участники форума пытаются помочь вам в решении вашей проблемы. Только вот вы не умеете однозначно формулировать вопросы. Как видите, неправильно (не так, как вы ожидали) вас понял не только я, но и все остальные. На конкретный вопрос вам дали бы конкретный ответ. Это вы, не понимая базовых вещей тычетесь в "не надо меня учить, я все сам знаю", при том, что всем свойственно ошибаться и заблуждаться даже в очевидных вещах.

это уже совершенно другой вопрос, не находите?
Я изначально спрашивал не "что такое наследование" а как объекты располагаются на низком уровне. Ладно, все неважно, всем спасибо, особенно тому, кто дал ссылку на вики, которуя я когда-то читал, но по диагонали, не уловив важного для меня вопроса
0
5499 / 4894 / 831
Регистрация: 04.06.2011
Сообщений: 13,587
20.06.2013, 15:07
Цитата Сообщение от MrGluck Посмотреть сообщение
Т.е. если А базовый класс, B производный, то объект класса B содержит в себе объект А, но не в отдельности, а как часть себя.
Например, объект абстрактного базового класса не создаётся, но деструктор для него вызывается, при уничтожении объекта производного класса. Т.е., как часть производного, объект базового существует, как отдельный объект - нет.
0
Почетный модератор
Эксперт С++
 Аватар для SatanaXIII
5851 / 2862 / 392
Регистрация: 01.11.2011
Сообщений: 6,906
20.06.2013, 15:08
Чего вы заладили? Вон ValeryS уже все сказал. И суть в трех словах, и вывод в последней фразе.
C++
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
struct A
  {
  int a;
  };
struct B
  {
  A ba;
  };
struct C
  {
  A ca;
  };
struct D
  {
  B dba;
  C dca;
  };
 
 
int main(int argc, char* argv[])
{
D exD;
exD.dba.ba.a = 3;
exD.dca.ca.a = 4;
}
И вообще
Цитата Сообщение от gigs Посмотреть сообщение
Объясните пожалуйста на простом примере принцип работы конструктора в С++. Я сейчас начал их изучать и никак не могу въехать. Спасибо.
1
20.06.2013, 15:10

Не по теме:

Цитата Сообщение от pizurok Посмотреть сообщение
особенно тому, кто дал ссылку на вики
Хорошо, что не на лурк)

0
 Аватар для pizurok
77 / 69 / 20
Регистрация: 05.05.2013
Сообщений: 3,810
20.06.2013, 15:11  [ТС]
Зря я влез и начал разруливать дебри наследования, ТС испугается)
0
Форумчанин
Эксперт CЭксперт С++
 Аватар для MrGluck
8216 / 5047 / 1437
Регистрация: 29.11.2010
Сообщений: 13,453
20.06.2013, 15:13

Не по теме:

alsav22, я вроде бы тоже самое написал



pizurok, искренне надеюсь, что вопросов больше нет.

Добавлено через 1 минуту

Не по теме:

Цитата Сообщение от ITcrusader Посмотреть сообщение
Хорошо, что не на лурк)
недавно видел в списках литературы к курсовому. Самое интересное - когда упомянул, что неплохо бы пересмотреть свое отношение к достоверности информации, оказалось, что список источников формировал препод.
https://www.cyberforum.ru/orde... 91212.html

0
 Аватар для tzeentch
26 / 26 / 13
Регистрация: 13.04.2013
Сообщений: 79
20.06.2013, 15:16
Цитата Сообщение от ITcrusader Посмотреть сообщение
Проблема ромба - надуманная проблема множественного наследования, чтобы было об чом поговорить)))
Потому что у тебя есть отец и мать (с) Страуструп?

Цитата Сообщение от ValeryS Посмотреть сообщение
не знаешь какую a он поменяет
Способ есть, его криво юзать для переменных, но для методов - норм (имхо).

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
#include <iostream>
 
using namespace std;
 
struct A {
  int a;
};
 
struct B {
  int a;
};
 
struct C : public A, public B {
  void print() {
    cout << A::a << ',' << B::a;
  }
};
 
int main() {
  C c;
  c.A::a = 10;
  c.B::a = 20;
  c.print();
}
0
Форумчанин
Эксперт CЭксперт С++
 Аватар для MrGluck
8216 / 5047 / 1437
Регистрация: 29.11.2010
Сообщений: 13,453
20.06.2013, 15:19

Не по теме:

Те, кто орут, что множественное наследование не нужно, слишком сложно и кичатся исключением оного из джавы и сидиеза, просто ниосиляторы. </trololo>



После Скотта Мейрса все становится понятно как светлый день.
0
Модератор
Эксперт по электронике
8978 / 6744 / 921
Регистрация: 14.02.2011
Сообщений: 23,854
20.06.2013, 15:21
Цитата Сообщение от tzeentch Посмотреть сообщение
Способ есть, его криво юзать для переменных,
А я и не сказал что его нет
1 указать полный путь
2 использовать виртуалку

я имел ввиду что просто без этих решений и возникает эта "проблема ромба"
0
20.06.2013, 15:23

Не по теме:

Цитата Сообщение от MrGluck Посмотреть сообщение
Не по теме:
alsav22, я вроде бы тоже самое написал
Я просто для наглядности привёл в пример pizurok абстрактные базовые классы. Все знают, что объекты таких классов не создаются.

0
Эксперт С++
 Аватар для ITcrusader
179 / 165 / 21
Регистрация: 12.02.2013
Сообщений: 410
20.06.2013, 15:27
Цитата Сообщение от tzeentch Посмотреть сообщение
Сообщение от ITcrusader
Проблема ромба - надуманная проблема множественного наследования, чтобы было об чом поговорить)))
Потому что у тебя есть отец и мать (с) Страуструп?
не понял, что это значит
0
 Аватар для tzeentch
26 / 26 / 13
Регистрация: 13.04.2013
Сообщений: 79
20.06.2013, 15:29
Ну, тут кто-то писал, что множественное наследование - зло, поэтому от него в Жабе и С# отказались...
0
Почетный модератор
Эксперт С++
 Аватар для SatanaXIII
5851 / 2862 / 392
Регистрация: 01.11.2011
Сообщений: 6,906
20.06.2013, 15:31
Цитата Сообщение от ITcrusader Посмотреть сообщение
не понял, что это значит


Не по теме:

Цитата Сообщение от tzeentch Посмотреть сообщение
кто-то писал, что множественное наследование - зло, поэтому от него в Жабе и С# отказались
Смысл был не то что зло, а то что ниасилил.

1
Эксперт С++
 Аватар для ITcrusader
179 / 165 / 21
Регистрация: 12.02.2013
Сообщений: 410
20.06.2013, 15:35
tzeentch, да кто что только не пишет не отказались от него в жабе, там - наследование интерфейсов оставлено. Множественное наследование - хорошая штука временами, во-всяком случае, если есть красивое воплощение предметной области именно в терминах множественного наследования - славно, что такой инструмент у нас есть замыкать ли иерархию такую сверху общим предком - это уже другое. Для семьи (которую моделировать здорово и понятно с помощью наследования) такая иерархия была бы странна.

Добавлено через 1 минуту
SatanaXIII, неужто у батьки с мамой - общий непосредственный предок?
0
 Аватар для pizurok
77 / 69 / 20
Регистрация: 05.05.2013
Сообщений: 3,810
20.06.2013, 15:35  [ТС]
Цитата Сообщение от tzeentch Посмотреть сообщение
Ну, тут кто-то писал, что множественное наследование - зло, поэтому от него в Жабе и С# отказались...
Я писал, и это правда, проводит параллели с реальным миром и ООП не совсем корректно, оно хоть и приближает нас к реальности, но далеко не так близко, чтобы сравнивать. Например, у папы и мамы должно быть общее поле Фамилия, но у них нет предка, который будет содержать эту фамилию (точнее есть но у одного, и мама становится наследником тестя после определнного момента в жизни, который реализован объекте типа ЗАГС)
0
Форумчанин
Эксперт CЭксперт С++
 Аватар для MrGluck
8216 / 5047 / 1437
Регистрация: 29.11.2010
Сообщений: 13,453
20.06.2013, 15:39
ITcrusader, фактически, множественное наследование в джаве отсутствует, а остальное - это уже попытки к нему примоститься. Однозначный ответ: множественное наследование в джава отсутствует.

Добавлено через 39 секунд
SatanaXIII, все бы ничего, но public означает связь "является" а ребенок не является отцом и матерью, хотя... ну хотя бы не одновременно

Добавлено через 1 минуту
Что уж говорить о том, что мать дедушкой не является
0
Эксперт С++
 Аватар для ITcrusader
179 / 165 / 21
Регистрация: 12.02.2013
Сообщений: 410
20.06.2013, 15:39
Цитата Сообщение от MrGluck Посмотреть сообщение
Однозначный ответ: множественное наследование в джава отсутствует.
Однозначности ради:
множественное наследование реализации в джава отсутствует, т.к., помнится, существуют 2 устоявшихся термина: наследование интерфейса, наследование реализации.
0
Модератор
Эксперт по электронике
8978 / 6744 / 921
Регистрация: 14.02.2011
Сообщений: 23,854
20.06.2013, 15:58
SatanaXIII,
ты немножко попутал
да у каждого человека есть отец и мать, но это члены класса
а не классы предки, хотя бы по тому что это конкретные экземпляры а не абстрактные описания

снизу вверх иерархия может выглядеть так

ребенок- человек -приматы- млекопитающее - позвоночное - животное( и так далее до амебы)
(иерархия может быть по другому в биологии не силен)
и члены родители есть уже на верхушке иерархии
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
20.06.2013, 15:58
Помогаю со студенческими работами здесь

Вопрос по наследованию
Уже неоднократно перечитывал главы про наследования и все равно до конца не разобрался. Вот например у нас есть класс Четырехугольник, и...

Вопрос по наследованию
Вывод Hello СHild Hello Base Что сделать чтобы Base не выводило при подобном вызове? using System; namespace...

Непонятка по наследованию
Объясните пожалуйста такой момент. Ниже приведу код программы результат ее работы два сообщения: &quot;Поле y=0 Поле y=228 &quot;. Не...

Работа в Eclipse по наследованию
Создать абстрактный класс Строение (в качестве свойств использовать координаты, количество окон и дверей). Создать массив объектов...

Задание по наследованию классов
Создать иерархию классов : линия - прямоугольник - пирамида. Все классы должны содержать методы для фиксации и получения значений всех...


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

Или воспользуйтесь поиском по форуму:
60
Ответ Создать тему
Новые блоги и статьи
Модель микоризы: классовый агентный подход
anaschu 02.01.2026
Раньше это было два гриба и бактерия. Теперь три гриба, растение. И на уровне агентов добавится между грибами или бактериями взаимодействий. До того я пробовал подход через многомерные массивы,. . .
Учёным и волонтёрам проекта «Einstein@home» удалось обнаружить четыре гамма-лучевых пульсара в джете Млечного Пути
Programma_Boinc 01.01.2026
Учёным и волонтёрам проекта «Einstein@home» удалось обнаружить четыре гамма-лучевых пульсара в джете Млечного Пути Сочетание глобально распределённой вычислительной мощности и инновационных. . .
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост.
Programma_Boinc 28.12.2025
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост. Налог на собак: https:/ / **********/ gallery/ V06K53e Финансовый отчет в Excel: https:/ / **********/ gallery/ bKBkQFf Пост отсюда. . .
Кто-нибудь знает, где можно бесплатно получить настольный компьютер или ноутбук? США.
Programma_Boinc 26.12.2025
Нашел на реддите интересную статью под названием Anyone know where to get a free Desktop or Laptop? Ниже её машинный перевод. После долгих разбирательств я наконец-то вернула себе. . .
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка.
Programma_Boinc 23.12.2025
Рецензия / Мнение/ Перевод Нашел на реддите интересную статью под названием The Thinkpad X220 Tablet is the best budget school laptop period . Ниже её машинный перевод. Thinkpad X220 Tablet —. . .
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Как объединить две одинаковые БД Access с разными данными
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru