![]() |
|
Модераторы: Daevaorn |
![]()
|
|
| JAnty |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 366 Регистрация: 6.12.2004 Где: Москва Репутация: 1 Всего: 2 |
Есть ли разница межде первым Fils и вторым? Это сообщение отредактировал(а) JAnty - 2.4.2007, 12:14 -------------------- |
|||
|
||||
| Earnest |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 5962 Регистрация: 17.6.2005 Где: Рязань Репутация: 53 Всего: 183 |
Есть, конечно. Во втором случае Base будет присутствовать дважды, что плохо.
-------------------- ... |
|||
|
||||
| Sartorius |
|
||||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1568 Регистрация: 18.7.2006 Где: Ivory tower Репутация: 8 Всего: 37 |
В первом случае мы имеем возможность в Docs переопределить , что нить от Base...
В общем использовать первый или второй способ для доступа к функциональностиь Docs и Base зависит от конкретной задачи... Напиши поподробней, чего ты хочешь... Добавлено через 2 минуты и 39 секунд Earnest, мне кажется, что JAnty, во втором случае на наследует Docs от Base
|
||||
|
|||||
| JAnty |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 366 Регистрация: 6.12.2004 Где: Москва Репутация: 1 Всего: 2 |
Я наследую от Docs который от Base
Мне надо точно знать, если в функциях Docs я изменю чонит в Base: Fils F; F./*Base::*/Q=1; потом F./*Docs::*/func1(); // который изменит Q=3; для F.Q это изменится? Добавлено через 2 минуты и 21 секунду Вообщем мне надо при помощи F менять всё, будет работать с первим методом "Fils от Docs который от Base" -------------------- |
|||
|
||||
| Earnest |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 5962 Регистрация: 17.6.2005 Где: Рязань Репутация: 53 Всего: 183 |
Когда надо знать точно, берем отладчик и смотрим. Еще можно отладочный вывод сделать. Вопрос не очень поняла. На всякий случай: Если ты пишешь A=3 и компилятор не ругается, то стало быть какой-то A он знает и изменит. Или у тебя большой выбор? -------------------- ... |
|||
|
||||
| JAnty |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 366 Регистрация: 6.12.2004 Где: Москва Репутация: 1 Всего: 2 |
Всё, до меня наконей дошло. Буду наследовать только Docs.
-------------------- |
|||
|
||||
| NoNo |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 109 Регистрация: 14.11.2006 Репутация: нет Всего: нет |
class Fils : public Docs , public Base
Это называется "неопределённость при множественном наследовании"..... class Docs : public Base ..так безопаснее ...хотя в действительности определись для чего тебе это..... |
|||
|
||||
| NoNo |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 109 Регистрация: 14.11.2006 Репутация: нет Всего: нет |
....Можешь пользоваться операцией "::" в множественном наследовании
Например: (объект Fils).(Base/Docs) :: (метод/конструктор/поле) Это сообщение отредактировал(а) NoNo - 2.4.2007, 16:06 |
|||
|
||||
| threef |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 375 Регистрация: 27.10.2005 Где: Запорожье Репутация: 9 Всего: 10 |
схема наследования
A | \ | B | / C запрещена, вот какая разница |
|||
|
||||
| Fazil6 |
|
|||
|
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1653 Регистрация: 3.5.2006 Где: Минск Репутация: 35 Всего: 60 |
почему запрещена? Теоретически это допускается Да и практически нет ничего необычного в такой схеме.
так что все от задачи зависит... Это сообщение отредактировал(а) Fazil6 - 3.4.2007, 14:27 |
|||
|
||||
| threef |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 375 Регистрация: 27.10.2005 Где: Запорожье Репутация: 9 Всего: 10 |
Fazil6,
не передергивай, в исходном посте не было виртуального наследования |
|||
|
||||
| NoNo |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 109 Регистрация: 14.11.2006 Репутация: нет Всего: нет |
threef,
да влюбом случае class Fils : public Docs , public Base компилится...значит не запрещена Добавлено через 1 минуту и 36 секунд
Верно! |
|||
|
||||
| threef |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 375 Регистрация: 27.10.2005 Где: Запорожье Репутация: 9 Всего: 10 |
NoNo, где компилится -то ?
|
|||
|
||||
| JAnty |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 366 Регистрация: 6.12.2004 Где: Москва Репутация: 1 Всего: 2 |
Конечно не компилиться, только с virtual я с начала и сам не знал, решил сначало посоветоваться, чтоб потом сам не запутался в классах и решил не использовать множественное наследование.
Я понял одно, множественное наследование это излишки ООП, ну или для кокихто очень сложных задач. Добавлено через 2 минуты и 46 секунд В VCL или в MFC есть классы с у которых есть множественное наследование ? -------------------- |
|||
|
||||
| Fazil6 |
|
|||
|
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1653 Регистрация: 3.5.2006 Где: Минск Репутация: 35 Всего: 60 |
вообще-то компилится, например , VS7 - 8 почему это не должно компилится?
|
|||
|
||||
![]()
|
| Правила форума "С++:Общие вопросы" | |
|
|
Добро пожаловать!
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | C/C++: Общие вопросы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |