Форум программистов, компьютерный форум, киберфорум
Наши страницы

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
 
Рейтинг: Рейтинг темы: голосов - 13, средняя оценка - 4.92
pizurok
76 / 68 / 3
Регистрация: 05.05.2013
Сообщений: 3,481
#1

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

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

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

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

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

Задача по наследованию в C++, нужно реализовать некоторые моменты - C++
Написать программу с объектами и реализовать наследование. Ситуация: Klimat (базовый объект), Derevo (выводной объект). a. Klimat:...

Задача по наследованию. Не понимаю некоторые моменты в формулировке задания - C++
Здравствуйте! Вот есть задание: Описать базовый класс СТРОКА Обязательные поля класса: # Указатель на char - хранит адрес...

"Предпочитайте композицию наследованию" - C++
Привет. В книге "Стандарты программирования на С++" есть совет 34: "Предпочитайте композицию наследованию" Хочу уточнить на счет...

68
ITcrusader
20.06.2013, 15:10     Вопросы по наследованию
  #46

Не по теме:

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

0
pizurok
76 / 68 / 3
Регистрация: 05.05.2013
Сообщений: 3,481
20.06.2013, 15:11  [ТС] #47
Зря я влез и начал разруливать дебри наследования, ТС испугается)
0
MrGluck
Модератор
Эксперт CЭксперт С++
7492 / 4607 / 693
Регистрация: 29.11.2010
Сообщений: 12,603
20.06.2013, 15:13 #48

Не по теме:

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



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

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

Не по теме:

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

0
tzeentch
25 / 25 / 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();
}
0
MrGluck
Модератор
Эксперт CЭксперт С++
7492 / 4607 / 693
Регистрация: 29.11.2010
Сообщений: 12,603
20.06.2013, 15:19 #50

Не по теме:

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



После Скотта Мейрса все становится понятно как светлый день.
0
ValeryS
Модератор
6709 / 5118 / 482
Регистрация: 14.02.2011
Сообщений: 17,213
20.06.2013, 15:21 #51
Цитата Сообщение от tzeentch Посмотреть сообщение
Способ есть, его криво юзать для переменных,
А я и не сказал что его нет
1 указать полный путь
2 использовать виртуалку

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

Не по теме:

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

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

Не по теме:

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

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

Добавлено через 1 минуту
SatanaXIII, неужто у батьки с мамой - общий непосредственный предок?
0
pizurok
76 / 68 / 3
Регистрация: 05.05.2013
Сообщений: 3,481
20.06.2013, 15:35  [ТС] #57
Цитата Сообщение от tzeentch Посмотреть сообщение
Ну, тут кто-то писал, что множественное наследование - зло, поэтому от него в Жабе и С# отказались...
Я писал, и это правда, проводит параллели с реальным миром и ООП не совсем корректно, оно хоть и приближает нас к реальности, но далеко не так близко, чтобы сравнивать. Например, у папы и мамы должно быть общее поле Фамилия, но у них нет предка, который будет содержать эту фамилию (точнее есть но у одного, и мама становится наследником тестя после определнного момента в жизни, который реализован объекте типа ЗАГС)
0
MrGluck
Модератор
Эксперт CЭксперт С++
7492 / 4607 / 693
Регистрация: 29.11.2010
Сообщений: 12,603
20.06.2013, 15:39 #58
ITcrusader, фактически, множественное наследование в джаве отсутствует, а остальное - это уже попытки к нему примоститься. Однозначный ответ: множественное наследование в джава отсутствует.

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

Добавлено через 1 минуту
Что уж говорить о том, что мать дедушкой не является
0
ITcrusader
Эксперт С++
176 / 162 / 8
Регистрация: 12.02.2013
Сообщений: 410
20.06.2013, 15:39 #59
Цитата Сообщение от MrGluck Посмотреть сообщение
Однозначный ответ: множественное наследование в джава отсутствует.
Однозначности ради:
множественное наследование реализации в джава отсутствует, т.к., помнится, существуют 2 устоявшихся термина: наследование интерфейса, наследование реализации.
0
ValeryS
Модератор
6709 / 5118 / 482
Регистрация: 14.02.2011
Сообщений: 17,213
20.06.2013, 15:58 #60
SatanaXIII,
ты немножко попутал
да у каждого человека есть отец и мать, но это члены класса
а не классы предки, хотя бы по тому что это конкретные экземпляры а не абстрактные описания

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

ребенок- человек -приматы- млекопитающее - позвоночное - животное( и так далее до амебы)
(иерархия может быть по другому в биологии не силен)
и члены родители есть уже на верхушке иерархии
0
20.06.2013, 15:58
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
20.06.2013, 15:58
Привет! Вот еще темы с ответами:

Написать простейшую программу по "перегрузке" и "наследованию" - C++
написать простейшую программу на СИ++ по &quot;перегрузке&quot; и &quot;наследованию&quot;. заранее спасибо!

Вопросы по C++ - C++
Всем привет! У меня появилось несколько вопросов по C++, был бы рад, если бы Вы помогли бы мне хотя бы из одним из них. 1) Как...

Вопросы - C++
Ребята, никто не писал никогда код на С++, связанный с имитационным моделированием? Просто, дали, там набор математич. формул и теория, а...

Вопросы!!! - C++
прошу посоветовать что почитать чтобы ответить на следующие вопросы!!(можно ответить ссылками) если будут промеры по теме буду рад:) ...


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

Или воспользуйтесь поиском по форуму:
60
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru