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

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

20.06.2013, 12:43. Показов 5273. Ответов 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
8217 / 5048 / 1437
Регистрация: 29.11.2010
Сообщений: 13,453
20.06.2013, 15:02
Студворк — интернет-сервис помощи студентам
pizurok, отнюдь, несмотря на все ваши "мне википедия помогла больше, чем все вы тут, бабки собравшиеся поболтать о том о сем", "никто ничего мне так и не сказал путного" я, как и другие участники форума пытаются помочь вам в решении вашей проблемы. Только вот вы не умеете однозначно формулировать вопросы. Как видите, неправильно (не так, как вы ожидали) вас понял не только я, но и все остальные. На конкретный вопрос вам дали бы конкретный ответ. Это вы, не понимая базовых вещей тычетесь в "не надо меня учить, я все сам знаю", при том, что всем свойственно ошибаться и заблуждаться даже в очевидных вещах.

Добавлено через 1 минуту
Цитата Сообщение от pizurok Посмотреть сообщение
Важно что они сохраняют уровни доступа к данным внутри себя
это уже совершенно другой вопрос, не находите?
0
5500 / 4895 / 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
5500 / 4895 / 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
8217 / 5048 / 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
8217 / 5048 / 1437
Регистрация: 29.11.2010
Сообщений: 13,453
20.06.2013, 15:19

Не по теме:

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



После Скотта Мейрса все становится понятно как светлый день.
0
Модератор
Эксперт по электронике
8982 / 6749 / 921
Регистрация: 14.02.2011
Сообщений: 23,875
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
8217 / 5048 / 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
Модератор
Эксперт по электронике
8982 / 6749 / 921
Регистрация: 14.02.2011
Сообщений: 23,875
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
Ответ Создать тему
Новые блоги и статьи
сукцессия 30. Фосфорный и азотный замки по "честному" закону лимитирования Либиха
anaschu 16.07.2026
Основные достижения за последние дни 1. Механизм отложенного высвобождения фосфора Добавлен специальный пул для медленного разложения меланизированных гиф ЕСМ Реализована разная скорость. . .
Запрет пометки на удаление и отмены проведения
Maks 16.07.2026
Алгоритм из решения ниже реализован на нетиповом документе "ПутевойЛист" разработанного в КА2. Задача: запретить помечать на удаление и отменять проведения путевого листа при условии, если он сдан. . .
Как надо было делать правильно - вообще не слушать ИИ, его дело - текст.
Hrethgir 15.07.2026
А вообще надо было делать не так, чтобы не исправлять ошибку https:/ / www. cyberforum. ru/ blogs/ 223907/ 10996. html , правильно было : удалил кнопку, а потом добавил её. Всё это стресс конечно. Почему?. . .
Знаете, от чего появляется стресс?
kumehtar 15.07.2026
Стресс появляется оттого, что вы, зная как поступить правильно, делаете наоборот. Ларри Уингет
Нас бьют, а мы крепчаем? Какая чушь!
kumehtar 15.07.2026
Вот это вот бытующее мнение, что человек меняется только под действием проблем, всегда считал вредоносным. Поверь, от проблем у людей появляются не изменения, а нервное расстройство и ПТСР. А. . .
сукцессия 29. Переход от одних деревьев на другие делать более или менее вероятностным?
anaschu 12.07.2026
Насколько смена типов микоризы — исключительное событие в двухвековой сукцессии? Оценка вероятности в пространстве параметров В текущей версии модели успешно реализован ключевой механизм. . .
сукцессия 27. Думаю, как переделывать уже написанную статью с планами на сукцессию.
anaschu 12.07.2026
Анализ соответствия модели требованиям Реализованные компоненты: Механизм закисления почвы через протонную помпу Конкуренция между типами микориз pH как триггер сукцессии C/ P соотношение. . .
Сукцессия 26. Мат модель создана.
anaschu 12.07.2026
Модель смены растительных сукцессий посредством управления грибами работает внутри небольшой ячейки почвы, восстанавливающейся после пожара, где ненадолго бывшее царство хвойных снова захватили. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru