Форум программистов, компьютерный форум CyberForum.ru

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

Восстановить пароль Регистрация
 
 
Рейтинг: Рейтинг темы: голосов - 13, средняя оценка - 4.92
pizurok
 Аватар для pizurok
53 / 67 / 3
Регистрация: 05.05.2013
Сообщений: 2,691
20.06.2013, 12:43     Вопросы по наследованию #1
Вопрос ещё по конструкторам

Допустим есть система классов
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?
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
20.06.2013, 12:43     Вопросы по наследованию
Посмотрите здесь:

C++ Вопросы
"Предпочитайте композицию наследованию" C++
Вопрос по наследованию C++
C++ Задание по наследованию классов
Вопросы по С++ C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
MrGluck
Ворчун
Эксперт С++
 Аватар для MrGluck
4919 / 2662 / 243
Регистрация: 29.11.2010
Сообщений: 7,399
20.06.2013, 15:02     Вопросы по наследованию #41
pizurok, отнюдь, несмотря на все ваши "мне википедия помогла больше, чем все вы тут, бабки собравшиеся поболтать о том о сем", "никто ничего мне так и не сказал путного" я, как и другие участники форума пытаются помочь вам в решении вашей проблемы. Только вот вы не умеете однозначно формулировать вопросы. Как видите, неправильно (не так, как вы ожидали) вас понял не только я, но и все остальные. На конкретный вопрос вам дали бы конкретный ответ. Это вы, не понимая базовых вещей тычетесь в "не надо меня учить, я все сам знаю", при том, что всем свойственно ошибаться и заблуждаться даже в очевидных вещах.

Добавлено через 1 минуту
Цитата Сообщение от pizurok Посмотреть сообщение
Важно что они сохраняют уровни доступа к данным внутри себя
это уже совершенно другой вопрос, не находите?
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
alsav22
5282 / 4801 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
20.06.2013, 15:06     Вопросы по наследованию #42
Цитата Сообщение от pizurok Посмотреть сообщение
Важно что они сохраняют уровни доступа к данным внутри себя
Смотря кто к кому. Прозводный к базовому и к себе - да. Базовый к производному и к себе - нет.
pizurok
 Аватар для pizurok
53 / 67 / 3
Регистрация: 05.05.2013
Сообщений: 2,691
20.06.2013, 15:06  [ТС]     Вопросы по наследованию #43
Цитата Сообщение от MrGluck Посмотреть сообщение
pizurok, отнюдь, несмотря на все ваши "мне википедия помогла больше, чем все вы тут, бабки собравшиеся поболтать о том о сем", "никто ничего мне так и не сказал путного" я, как и другие участники форума пытаются помочь вам в решении вашей проблемы. Только вот вы не умеете однозначно формулировать вопросы. Как видите, неправильно (не так, как вы ожидали) вас понял не только я, но и все остальные. На конкретный вопрос вам дали бы конкретный ответ. Это вы, не понимая базовых вещей тычетесь в "не надо меня учить, я все сам знаю", при том, что всем свойственно ошибаться и заблуждаться даже в очевидных вещах.

это уже совершенно другой вопрос, не находите?
Я изначально спрашивал не "что такое наследование" а как объекты располагаются на низком уровне. Ладно, все неважно, всем спасибо, особенно тому, кто дал ссылку на вики, которуя я когда-то читал, но по диагонали, не уловив важного для меня вопроса
alsav22
5282 / 4801 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
20.06.2013, 15:07     Вопросы по наследованию #44
Цитата Сообщение от MrGluck Посмотреть сообщение
Т.е. если А базовый класс, B производный, то объект класса B содержит в себе объект А, но не в отдельности, а как часть себя.
Например, объект абстрактного базового класса не создаётся, но деструктор для него вызывается, при уничтожении объекта производного класса. Т.е., как часть производного, объект базового существует, как отдельный объект - нет.
SatanaXIII
Супер-модератор
Эксперт С++
 Аватар для SatanaXIII
5547 / 2561 / 233
Регистрация: 01.11.2011
Сообщений: 6,330
Завершенные тесты: 1
20.06.2013, 15:08     Вопросы по наследованию #45
Чего вы заладили? Вон 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 Посмотреть сообщение
Объясните пожалуйста на простом примере принцип работы конструктора в С++. Я сейчас начал их изучать и никак не могу въехать. Спасибо.
ITcrusader
20.06.2013, 15:10
  #46

Не по теме:

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

pizurok
 Аватар для pizurok
53 / 67 / 3
Регистрация: 05.05.2013
Сообщений: 2,691
20.06.2013, 15:11  [ТС]     Вопросы по наследованию #47
Зря я влез и начал разруливать дебри наследования, ТС испугается)
MrGluck
Ворчун
Эксперт С++
 Аватар для MrGluck
4919 / 2662 / 243
Регистрация: 29.11.2010
Сообщений: 7,399
20.06.2013, 15:13     Вопросы по наследованию #48

Не по теме:

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



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

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

Не по теме:

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

tzeentch
 Аватар для tzeentch
24 / 24 / 2
Регистрация: 13.04.2013
Сообщений: 79
20.06.2013, 15:16     Вопросы по наследованию #49
Цитата Сообщение от 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();
}
MrGluck
Ворчун
Эксперт С++
 Аватар для MrGluck
4919 / 2662 / 243
Регистрация: 29.11.2010
Сообщений: 7,399
20.06.2013, 15:19     Вопросы по наследованию #50

Не по теме:

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



После Скотта Мейрса все становится понятно как светлый день.
ValeryS
Модератор
6374 / 4840 / 441
Регистрация: 14.02.2011
Сообщений: 16,040
20.06.2013, 15:21     Вопросы по наследованию #51
Цитата Сообщение от tzeentch Посмотреть сообщение
Способ есть, его криво юзать для переменных,
А я и не сказал что его нет
1 указать полный путь
2 использовать виртуалку

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

Не по теме:

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

ITcrusader
Эксперт C++
 Аватар для ITcrusader
176 / 162 / 8
Регистрация: 12.02.2013
Сообщений: 410
20.06.2013, 15:27     Вопросы по наследованию #53
Цитата Сообщение от tzeentch Посмотреть сообщение
Сообщение от ITcrusader
Проблема ромба - надуманная проблема множественного наследования, чтобы было об чом поговорить)))
Потому что у тебя есть отец и мать (с) Страуструп?
не понял, что это значит
tzeentch
 Аватар для tzeentch
24 / 24 / 2
Регистрация: 13.04.2013
Сообщений: 79
20.06.2013, 15:29     Вопросы по наследованию #54
Ну, тут кто-то писал, что множественное наследование - зло, поэтому от него в Жабе и С# отказались...
SatanaXIII
Супер-модератор
Эксперт С++
 Аватар для SatanaXIII
5547 / 2561 / 233
Регистрация: 01.11.2011
Сообщений: 6,330
Завершенные тесты: 1
20.06.2013, 15:31     Вопросы по наследованию #55
Цитата Сообщение от ITcrusader Посмотреть сообщение
не понял, что это значит
Вопросы по наследованию

Не по теме:

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

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

Добавлено через 1 минуту
SatanaXIII, неужто у батьки с мамой - общий непосредственный предок?
pizurok
 Аватар для pizurok
53 / 67 / 3
Регистрация: 05.05.2013
Сообщений: 2,691
20.06.2013, 15:35  [ТС]     Вопросы по наследованию #57
Цитата Сообщение от tzeentch Посмотреть сообщение
Ну, тут кто-то писал, что множественное наследование - зло, поэтому от него в Жабе и С# отказались...
Я писал, и это правда, проводит параллели с реальным миром и ООП не совсем корректно, оно хоть и приближает нас к реальности, но далеко не так близко, чтобы сравнивать. Например, у папы и мамы должно быть общее поле Фамилия, но у них нет предка, который будет содержать эту фамилию (точнее есть но у одного, и мама становится наследником тестя после определнного момента в жизни, который реализован объекте типа ЗАГС)
MrGluck
Ворчун
Эксперт С++
 Аватар для MrGluck
4919 / 2662 / 243
Регистрация: 29.11.2010
Сообщений: 7,399
20.06.2013, 15:39     Вопросы по наследованию #58
ITcrusader, фактически, множественное наследование в джаве отсутствует, а остальное - это уже попытки к нему примоститься. Однозначный ответ: множественное наследование в джава отсутствует.

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

Добавлено через 1 минуту
Что уж говорить о том, что мать дедушкой не является
ITcrusader
Эксперт C++
 Аватар для ITcrusader
176 / 162 / 8
Регистрация: 12.02.2013
Сообщений: 410
20.06.2013, 15:39     Вопросы по наследованию #59
Цитата Сообщение от MrGluck Посмотреть сообщение
Однозначный ответ: множественное наследование в джава отсутствует.
Однозначности ради:
множественное наследование реализации в джава отсутствует, т.к., помнится, существуют 2 устоявшихся термина: наследование интерфейса, наследование реализации.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
20.06.2013, 15:58     Вопросы по наследованию
Еще ссылки по теме:

Задача по наследованию. Не понимаю некоторые моменты в формулировке задания C++
Вопрос по наследованию C++
C++ Написать простейшую программу по "перегрузке" и "наследованию"

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

Или воспользуйтесь поиском по форуму:
ValeryS
Модератор
6374 / 4840 / 441
Регистрация: 14.02.2011
Сообщений: 16,040
20.06.2013, 15:58     Вопросы по наследованию #60
SatanaXIII,
ты немножко попутал
да у каждого человека есть отец и мать, но это члены класса
а не классы предки, хотя бы по тому что это конкретные экземпляры а не абстрактные описания

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

ребенок- человек -приматы- млекопитающее - позвоночное - животное( и так далее до амебы)
(иерархия может быть по другому в биологии не силен)
и члены родители есть уже на верхушке иерархии
Yandex
Объявления
20.06.2013, 15:58     Вопросы по наследованию
Ответ Создать тему
Опции темы

Текущее время: 06:06. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru