1 / 1 / 0
Регистрация: 24.04.2014
Сообщений: 66
|
||||||
1 | ||||||
Наследование классов: неудачный пример из Лафоре12.06.2014, 01:04. Показов 2271. Ответов 19
Метки нет (Все метки)
И снова всем доброй ночи . Начал читать про наследование классов и совсем запутался может быть вы мне растолкуете в чем ошибка и чего я не понял. Вот пример:
При компиляции данного примера возникает ошибка связанная вот с этим ( tes t2(5); ). Но если я все правильно понял из того что написано в учебнике, пример должен работать т.к если обратить внимание на цитату, а именно на ту строчку которую я выделил жирным шрифтом. Мы увидим что если в наследуемом классе нет своего конструктора он обратиться к подходящему конструктору родителя. В конструкторе test у меня определен конструктор с одним параметром но он им почему то не пользуется. В чем проблема??? подскажите пожалуйста
0
|
12.06.2014, 01:04 | |
Ответы с готовыми решениями:
19
Пример из книги Лафоре Лафоре Не компилируется пример Пример из книги Лафоре Непонятен пример из Лафоре |
3225 / 1752 / 436
Регистрация: 03.05.2010
Сообщений: 3,867
|
|
12.06.2014, 01:44 | 2 |
Проблема в "учебнике", который нужно немедленно выбросить и заменить на толковый. А что за "учебник" такой?
1
|
1 / 1 / 0
Регистрация: 24.04.2014
Сообщений: 66
|
|
12.06.2014, 02:53 [ТС] | 4 |
Р. Лафоре "Объектно-ориентированное программирование в С++" 4-е издание.
стр. 363
0
|
2782 / 1935 / 570
Регистрация: 05.06.2014
Сообщений: 5,600
|
|
12.06.2014, 03:12 | 5 |
1
|
3225 / 1752 / 436
Регистрация: 03.05.2010
Сообщений: 3,867
|
|
12.06.2014, 09:34 | 7 |
Блин! Я так и думал. Я уже покритиковал этого «автора», но товарищ, который его мучает, написал, что конечно, но зато он «бу-бу-бу». Оказывается ни хрена не «бу-бу-бу», и бракодел в одном бракодел во всем.
Однако ж пишут, что эта чушь офигенно популярна среди американских студентов, причем настолько, что надо было ее четыре раза переиздавать, да еще и на русский переводить эту галиматью. Мда, дофига есть на свете, друг Горацио…
0
|
1 / 1 / 0
Регистрация: 24.04.2014
Сообщений: 66
|
|
12.06.2014, 09:43 [ТС] | 8 |
Mr.X, alsav22, а что посоветуете?? какой учебник скачать только чтобы он был для начинающих.
0
|
:)
4773 / 3267 / 497
Регистрация: 19.02.2013
Сообщений: 9,046
|
|
12.06.2014, 10:52 | 9 |
Ради интереса решил посмотреть, что же пишет этот Лафоре. Для сравнения привожу оригинал и перевод.
Перевод в данном случае можно назвать адекватным, а вот саму идею использования "подходящего" конструктора из базового класса не стоит распространять на конструкторы с параметрами. У автора в примере указывается именно конструктор по умолчанию. Но сформулировано так, что и для других констукторов будут работать аналогичные правила, что, конечно, не соответствует действительности. P.S. Оригинал книги издан в 2002 году, новых книг автор не писал (а жив ли он ещё?). Не знаю насколько в целом она хороша для начинающего, но учитывая некоторые неоднозначные формулировки автора и древность книги, стоит рассмотреть другие варианты. См. список литературы.
0
|
3225 / 1752 / 436
Регистрация: 03.05.2010
Сообщений: 3,867
|
|
12.06.2014, 11:28 | 10 |
Ну так сама идея-то бредовая, и показывает, что данный «чукча» не читатель, а писатель, т.е. сам учебников по C++ и не открывал. Что значит «использование подходящего»? Конструктор производного класса всегда вызывает конструктор базового класса. А если конструктор производного класса не определен, то он генерируется компилятором.
0
|
1 / 1 / 0
Регистрация: 24.04.2014
Сообщений: 66
|
|
12.06.2014, 21:30 [ТС] | 12 |
Согласен я примерно так и думал, спасибо всем откликнувшимся за помощь. Все же дочитаю эту книжку надеюсь больше косяков не будет а там если что в других нужные моменты уточню.
0
|
5498 / 4893 / 831
Регистрация: 04.06.2011
Сообщений: 13,587
|
|
12.06.2014, 21:43 | 13 |
0
|
3225 / 1752 / 436
Регистрация: 03.05.2010
Сообщений: 3,867
|
|
12.06.2014, 22:07 | 14 |
Безумству храбрых... Чувствуется, что вы не ищете легких путей! Взвейтесь соколы орлами!
0
|
New to C++
83 / 44 / 10
Регистрация: 14.01.2013
Сообщений: 258
|
|
12.06.2014, 22:21 | 15 |
dicros, Конечно же есть в книге пару неточностей, но именно с этой книги я начал изучение, и я остался доволен этой книгой. Так, что можно и по этой книге спокойно учить
0
|
1 / 1 / 0
Регистрация: 24.04.2014
Сообщений: 66
|
|||||||||||
13.06.2014, 02:00 [ТС] | 16 | ||||||||||
Почитал я там дальше и вроде как стало более понятно, если я правильно понял то....
Конструкторы в наследуемом классе создаются для того чтобы вызвать соответствующий конструктор базового класса и инициализировать его значение. В данном случае инициализировать number
Но с другой стороны зачем мучиться с конструкторами если того же результата можно добиться с помощью обычной функции.
0
|
2782 / 1935 / 570
Регистрация: 05.06.2014
Сообщений: 5,600
|
|||||||||||
13.06.2014, 02:23 | 18 | ||||||||||
0
|
3225 / 1752 / 436
Регистрация: 03.05.2010
Сообщений: 3,867
|
|
13.06.2014, 03:28 | 19 |
Ну вот Страуструп в своей книге как раз и объясняет почему "обычная функция" не годится. А объявлять данные protected это Лафоре рекомендует? Это нарушение инкапсуляции. Лазить своими функциями в чужие данные - это тоже нарушение инкапсуляции.
0
|
1 / 1 / 0
Регистрация: 24.04.2014
Сообщений: 66
|
|
13.06.2014, 08:59 [ТС] | 20 |
0
|
13.06.2014, 08:59 | |
13.06.2014, 08:59 | |
Помогаю со студенческими работами здесь
20
Лафоре, преобразование классов Не работает пример из книги Лафоре Пример из книги Лафоре. Подсчитать количество слов и символов в строке Автоматическая генерация классов С ++ с UML диаграмм классов. Наследование в с++. Абстрактные классы. WhiteStarUML Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |