crossplatform.ru

Здравствуйте, гость ( Вход | Регистрация )

> Создание объекта
Yaroslav
  опции профиля:
сообщение 16.5.2011, 14:18
Сообщение #1


Новичок


Группа: Новичок
Сообщений: 9
Регистрация: 15.2.2011
Пользователь №: 2412

Спасибо сказали: 0 раз(а)




Репутация:   0  


у меня возникает такой вопрос ...:
Есть два класса ..
class Base
{
}
class Child: public Base
{
}
int main()
{
Base *pt = new Child;

}
где можно использовать такой тип создания объекта?? Что дает такое создание???

Спасибо..
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
 
Начать новую тему
Ответов (1 - 3)
RazrFalcon
  опции профиля:
сообщение 16.5.2011, 15:59
Сообщение #2


Zombie Mod
*****

Группа: Участник
Сообщений: 1654
Регистрация: 24.5.2010
Из: Харьков
Пользователь №: 1752

Спасибо сказали: 64 раз(а)




Репутация:   212  


Если я правильно понял, то это банальное наследование классов.
Вы поучаете в классе Child возможность использовать функции из Base.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Iron Bug
  опции профиля:
сообщение 16.5.2011, 17:48
Сообщение #3


Профессионал
*****

Группа: Модератор
Сообщений: 1611
Регистрация: 6.2.2009
Из: Yekaterinburg
Пользователь №: 533

Спасибо сказали: 219 раз(а)




Репутация:   12  


да, всё верно.
даёт лишь возможность динамического приведения к типу Child*:
Child *pt2 = dynamic_cast<Child*>(pt);
и pt2 будет ненулевым.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Litkevich Yuriy
  опции профиля:
сообщение 16.5.2011, 20:00
Сообщение #4


разработчик РЭА
*******

Группа: Сомодератор
Сообщений: 9669
Регистрация: 9.1.2008
Из: Тюмень
Пользователь №: 64

Спасибо сказали: 807 раз(а)




Репутация:   94  


Цитата(Yaroslav @ 16.5.2011, 17:18) *
где можно использовать такой тип создания объекта?? Что дает такое создание???
да объект-то тут простой. Только указатель на базовый класс инициализируется объектом-наследником.
Это из области под названием полиморфизм (многоформие)
Обычно он используется внутри функций.

Т.к. наследники (обычно) наследуют все методы базового класса, то можно написать такую (для примера) функцию:
void someFunc(Base *o)
{
    o->someMethod();
}
где someMethod() - метод базового класса. Все наследники (обычно) наследуют этот метод. Тогда, какой бы наследник не создали, его можно будет передать внутрь этой функции.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение

Быстрый ответОтветить в данную темуНачать новую тему
Теги
Нет тегов для показа


1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0




RSS Текстовая версия Сейчас: 29.3.2024, 1:18