![]() |
|
Модераторы: bsa |
![]()
|
|
| yngwie19 |
|
||||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 829 Регистрация: 15.6.2008 Где: Новгород Репутация: нет Всего: нет |
Правильно ли Я понимаю?
Допустим есть класс BasicClass (базовый класс) и ProdClass (производный от него класс):
Вопрос. Правильно ли Я понимаю, что когда мы в main пишем
то на печать выходит 15,20, т.к x и y относятяся к объекту PredClass Это сообщение отредактировал(а) yngwie19 - 4.11.2008, 11:23 |
||||
|
|||||
| Andrey44 |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1501 Регистрация: 4.12.2006 Где: На работе Репутация: 2 Всего: 26 |
Все так и будет.
Только x и y не относятся к объекту PredClass. Это сообщение отредактировал(а) Andrey44 - 4.11.2008, 11:27 -------------------- ????? ??, ??????? ?????. |
|||
|
||||
| yngwie19 |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 829 Регистрация: 15.6.2008 Где: Новгород Репутация: нет Всего: нет |
Andrey44, Ну понятно что они не описаны в классе PredClass, но они наследуются от класса BasicClass, значит как-бы относятся. Или Я ошибаюсь
Добавлено через 3 минуты и 5 секунд Andrey44, А мы можем как-нибудь инициализировать x и y для объекта PrebClass, не используя конструктор BasicClass ? |
|||
|
||||
| Fazil6 |
|
||||||||
|
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1653 Регистрация: 3.5.2006 Где: Минск Репутация: 7 Всего: 60 |
нет. Это не скомпилится. должно быть
и делать x и y protected не нужно. Лучше private Добавлено через 3 минуты и 17 секунд
если они protected, то это возможно при наличии у BasicClass конструктора поумолчанию
но строго говоря - это нарушение инкапсуляции |
||||||||
|
|||||||||
| yngwie19 |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 829 Регистрация: 15.6.2008 Где: Новгород Репутация: нет Всего: нет |
||||
|
||||
| Fazil6 |
|
||||
|
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1653 Регистрация: 3.5.2006 Где: Минск Репутация: 7 Всего: 60 |
ну если ты не хочешь использовать конструктор BasicClass(int a, int b), то нужно же каким-то другим конструктором инициализировать базовый класс Добавлено через 3 минуты и 11 секунд а вообще, повторяю, то о чем ты спрашиваешь возможно, но так делать не стоит.
это наследование интерфейса
это наследование реализации |
||||
|
|||||
| yngwie19 |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 829 Регистрация: 15.6.2008 Где: Новгород Репутация: нет Всего: нет |
Fazil6, т.е так Я сделать не смогу?
|
|||
|
||||
| Fazil6 |
|
||||
|
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1653 Регистрация: 3.5.2006 Где: Минск Репутация: 7 Всего: 60 |
ну попробуй и увидишь. Оно ведь не скомпиллится.
но так как ты определил конструктор
то конструктор поумолчанию компиллятором не генерится и его нет Если ты дополнительно определишь конструктор BasicClass() , то работать это будет, только как грится через Ж..У. Переменные должны инициализироваться в том классе, в котором они определены. Почитай про порядок создания объектов и инициализацию их членов. |
||||
|
|||||
| Andrey44 |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1501 Регистрация: 4.12.2006 Где: На работе Репутация: 2 Всего: 26 |
Нет, так не скомпилится. только
-------------------- ????? ??, ??????? ?????. |
|||
|
||||
| yngwie19 |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 829 Регистрация: 15.6.2008 Где: Новгород Репутация: нет Всего: нет |
Andrey44, без Использования BasicClass.
ведь x и y не объекты. Т.е ты имеешь в виду, что когда мы пишем x(a), y(b), то мы вызываем конструктор по умолчанию BasicClass() ? |
|||
|
||||
| Andrey44 |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1501 Регистрация: 4.12.2006 Где: На работе Репутация: 2 Всего: 26 |
У BasicClass нет конструктора без параметров.
А ты пытаешься его вызвать.В классе PredClass ты должен обязательно проинициализировать BasicClass вызвав его конструктор. -------------------- ????? ??, ??????? ?????. |
|||
|
||||
| Fazil6 |
|
|||
|
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1653 Регистрация: 3.5.2006 Где: Минск Репутация: 7 Всего: 60 |
в конструкторе PredClass не указан конструктор BasicClass - значит используется BasicClass(), а его нет. x(a), y(b) должно быть в конструкторе BasicClass, а не PredClass. Это ведь члены BasicClass и инициализироваться должны в списке инициализации конструкторов этого класса, а не PredClass. x и y можно присвоить значения в конструкторе PredClass, но не в списке инициализации а присваиванием x = a, а во вторых при наличии BasicClass(int a, int b) смысла в этом нет. Это сообщение отредактировал(а) Fazil6 - 4.11.2008, 12:58 |
|||
|
||||
| yngwie19 |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 829 Регистрация: 15.6.2008 Где: Новгород Репутация: нет Всего: нет |
Fazil6, Сказал. что так можно сделать используя
|
|||
|
||||
| Fazil6 |
|
|||
|
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1653 Регистрация: 3.5.2006 Где: Минск Репутация: 7 Всего: 60 |
ты не понял. Нельзя такой записью сделать. Я не это имел в виду вот так можно сделать
при этом имеем нарушение инкапсуляции. Не вижу смысла так делать. Это сообщение отредактировал(а) Fazil6 - 4.11.2008, 13:04 |
|||
|
||||
| Andrey44 |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1501 Регистрация: 4.12.2006 Где: На работе Репутация: 2 Всего: 26 |
Нельзя так сделать не вызвав конструктор базового класса. А если у тебя будет
Что тогда делать будешь? -------------------- ????? ??, ??????? ?????. |
|||
|
||||
![]()
|
| Правила форума "C/C++: Для новичков" | |
|
|
Запрещается! 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, JackYF, bsa. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | C/C++: Для новичков | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |