Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 05.07.2013, 19:55   #21
Igor95
Форумчанин
 
Регистрация: 03.01.2013
Сообщений: 388
По умолчанию

Цитата:
Сообщение от Пепел Феникса Посмотреть сообщение
никаких операторов не будет вызвано.
дочерний класс итак считается полностью совместимым с родительским, потому если вы в своем операторе приведения создаете новый объект, то будет утечка памяти.

в вашем случае:
Код:
MyClass b;
MyStruct* t=&b;
вполне будет работать итак.
Погодите, а разве у *t будут все данные-члены инициализированы? Ведь, производный класс, ВОЗМОЖНО, содержит больше данных-членов чем базовый.
Понижающее приведение типов.
Igor95 вне форума Ответить с цитированием
Старый 05.07.2013, 20:27   #22
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

Цитата:
Сообщение от Igor95 Посмотреть сообщение
Погодите, а разве у *t будут все данные-члены инициализированы? Ведь, производный класс, ВОЗМОЖНО, содержит больше данных-членов чем базовый.
Понижающее приведение типов.
понижающее приведение разрешено, иначе бы полиморфизм был бы ограничен до ужаса.
дочерний класс считается совместимым с родительским, так как содержит все его методы(но учитывая виртуальные члены он может вести себя иначе) и члены.
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Старый 05.07.2013, 20:34   #23
Igor95
Форумчанин
 
Регистрация: 03.01.2013
Сообщений: 388
По умолчанию

Цитата:
Сообщение от Пепел Феникса Посмотреть сообщение
понижающее приведение разрешено, иначе бы полиморфизм был бы ограничен до ужаса.
дочерний класс считается совместимым с родительским, так как содержит все его методы(но учитывая виртуальные члены он может вести себя иначе) и члены.
Да, но, не рекомендуется. Все зависит от содержимого производного класса.
Igor95 вне форума Ответить с цитированием
Старый 05.07.2013, 20:39   #24
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

Цитата:
Сообщение от Igor95 Посмотреть сообщение
Да, но, не рекомендуется. Все зависит от содержимого производного класса.
наследование не стоит применять там где оно не нужно в принципе.
а там где оно применено, вполне допустимо.
пример с того что я писал:
Цитата:
Stream
-FileStream
-MemoryStream
-SocketStream
тут приведение очень даже допустимо и необходимо.
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Старый 05.07.2013, 20:56   #25
Igor95
Форумчанин
 
Регистрация: 03.01.2013
Сообщений: 388
По умолчанию

Цитата:
Сообщение от Пепел Феникса Посмотреть сообщение
наследование не стоит применять там где оно не нужно в принципе.
а там где оно применено, вполне допустимо.
пример с того что я писал:


тут приведение очень даже допустимо и необходимо.
Я не спорю. Просто данные-члены производного класса могут остаться неинициализированными...
Igor95 вне форума Ответить с цитированием
Старый 05.07.2013, 21:53   #26
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

Цитата:
Сообщение от Igor95 Посмотреть сообщение
Я не спорю. Просто данные-члены производного класса могут остаться неинициализированными...
с какого перепуга?
конструктор предка будет вызван(либо по умолчанию, либо определенный) так или иначе.
часть предка будет создана ровно так же, как был бы создан предок отдельно.

а применять наследование с хранением мусора предка, по мне так криво.
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.

Последний раз редактировалось Пепел Феникса; 05.07.2013 в 21:56.
Пепел Феникса вне форума Ответить с цитированием
Старый 05.07.2013, 23:17   #27
Igor95
Форумчанин
 
Регистрация: 03.01.2013
Сообщений: 388
По умолчанию

Цитата:
Сообщение от Пепел Феникса Посмотреть сообщение
с какого перепуга?
конструктор предка будет вызван(либо по умолчанию, либо определенный) так или иначе.
часть предка будет создана ровно так же, как был бы создан предок отдельно.

а применять наследование с хранением мусора предка, по мне так криво.
В том примере, который Вы привели, вы не создавали объект производного класса.
В итоге получаем неинициализированые данные-члены.
Могу, конечно, и ошибаться.
Igor95 вне форума Ответить с цитированием
Старый 05.07.2013, 23:33   #28
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

Цитата:
Сообщение от Igor95 Посмотреть сообщение
В том примере, который Вы привели, вы не создавали объект производного класса.
В итоге получаем неинициализированые данные-члены.
Могу, конечно, и ошибаться.
в примере код обрывочен, там если его так и взять это вообще висящие указатели.
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
преобразование типов mego4el Помощь студентам 3 30.11.2011 04:50
преобразование типов яз СИ Танчик007 Помощь студентам 0 03.05.2011 18:57
Преобразование типов Svetlana750231 Visual C++ 3 22.04.2011 13:43
Преобразование типов FaTaL Общие вопросы .NET 5 07.03.2011 14:07
Преобразование типов DeFace Общие вопросы C/C++ 4 24.03.2009 17:06