Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.60/5: Рейтинг темы: голосов - 5, средняя оценка - 4.60
Заблокирован
1

Можно ли прервать цепочку наследования?

10.07.2013, 22:02. Показов 959. Ответов 9
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
например есть три класса, A, B и C. Класс "А" - базовый, "B" наследуется от "A", "C" наследуется от "B", как бы получается цепочка наследования A->B->C. Вопрос: можно ли сделать так, чтоб класс B наследовался от А, а класс С наследовался от B, но при этом класс C не наследовался бы от А ?
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
10.07.2013, 22:02
Ответы с готовыми решениями:

Как прервать цепочку вызовов в событии без вызова исплючения?
Как известно у делегата есть список методов, которые вызываются поочередно при вызове делегата....

Как можно прервать выполнение цикла?
Подскажите пожалуйста, как можно прервать выполнение цикла. Ситуация такая: допустим на форме есть...

Можно ли скриптом прервать выполнение другого скрипта?
<script src="script-1"></script> <script src="script-2"></script> Можно ли скриптом...

Как можно прервать выполнение в условном операторе?
Как можно прервать выполнение в условном операторе: if ... then ... else 'прервать' end if...

9
Каратель
Эксперт С++
6609 / 4028 / 401
Регистрация: 26.03.2010
Сообщений: 9,273
Записей в блоге: 1
10.07.2013, 22:10 2
Цитата Сообщение от babkaVkedah Посмотреть сообщение
Вопрос: можно ли сделать так, чтоб класс B наследовался от А, а класс С наследовался от B, но при этом класс C не наследовался бы от А ?
нельзя. это неправильное применение наследования.
0
Неэпический
17870 / 10635 / 2054
Регистрация: 27.09.2012
Сообщений: 26,736
Записей в блоге: 1
10.07.2013, 22:35 3
Можно немного по другому сделать - используя множественное наследование, но это усложнит программу
0
Модератор
Эксперт по электронике
8908 / 6677 / 918
Регистрация: 14.02.2011
Сообщений: 23,521
10.07.2013, 22:38 4
babkaVkedah,
пример приведи, зачем это надо?

Добавлено через 44 секунды
Croessmah,
чей то даже представить не могу
0
Неэпический
17870 / 10635 / 2054
Регистрация: 27.09.2012
Сообщений: 26,736
Записей в блоге: 1
10.07.2013, 22:51 5
ValeryS, Если я правильно вопрос понял, то:
A <- - B --> B0 <-- C
0
1178 / 1128 / 94
Регистрация: 31.05.2012
Сообщений: 3,060
10.07.2013, 22:53 6
Цитата Сообщение от babkaVkedah Посмотреть сообщение
можно ли сделать так, чтоб класс B наследовался от А, а класс С наследовался от B, но при этом класс C не наследовался бы от А ?
Вряд ли это вообще вписывается в парадигму ООП.

Может Вам подойдёт композиция, либо другая цепочка наследования.
A и С наследуются от B.

Но с учётом что тема в цпп, то можно и множественное наследование использовать
A
B От A и D
А C От D
0
4311 / 1422 / 463
Регистрация: 16.12.2010
Сообщений: 2,939
Записей в блоге: 3
10.07.2013, 22:55 7
В принципе если нужно сделать так, чтобы из C нельзя было получить A, а из B можно, то сделать наследование закрытым.
Кликните здесь для просмотра всего текста
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
class A
{
protected:
    int i;
};
 
class B: A
{
public:
    void f()
    {
        i;
    }
};
 
class C: public B
{
public:
    void f()
    {
    //! i; error
    }
};
0
1178 / 1128 / 94
Регистрация: 31.05.2012
Сообщений: 3,060
10.07.2013, 22:58 8
А суть то в чём? все свойства будут созданы в памяти, просто не будут использоваться?
0
:)
Эксперт С++
4773 / 3267 / 497
Регистрация: 19.02.2013
Сообщений: 9,046
11.07.2013, 10:25 9
Цитата Сообщение от DrobyshevAlex Посмотреть сообщение
А суть то в чём? все свойства будут созданы в памяти, просто не будут использоваться?
Если Вы про закрытое наследование говорите, то это дает наследование реализации, но не интерфейса.
Поле класса A используется в классе B, но недоступно в C.
Если речь о чем-то другом, то я Вас не понял.
0
Заблокирован
11.07.2013, 10:32  [ТС] 10
Цитата Сообщение от Tulosba Посмотреть сообщение
Если Вы про закрытое наследование говорите, то это дает наследование реализации, но не интерфейса.
Поле класса A используется в классе B, но недоступно в C.
Если речь о чем-то другом, то я Вас не понял.
Речь идёт как раз именно об этом.
Я вот подумал, что такое можно сделать, если класс "С" не наследовать вообще от "B", а сделать класс "C" дружественным для класса "B", тоесть через friend
0
11.07.2013, 10:32
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
11.07.2013, 10:32
Помогаю со студенческими работами здесь

Как можно прервать выполнение цикла на определенное время?
&lt;? $y=0; for ($i=0; $i&lt;100; $i++){ $y++; if ($y==4){ # здесь нужно прервать цикл, скажем...

Можно ли использовать скрипты без наследования от MonoBehaviour?
По описанию на docs.unity3d.com я вижу, что наследование скриптов от MonoBehaviour в принципе не...

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

Чем отличаются структуры для наследования интерфейса от структур для наследования реализаций?
Дорогие программисты, во первых, хочу поздравить вас с Наступающим новым Годом! Я к вам обращаюсь с...


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

Или воспользуйтесь поиском по форуму:
10
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru