ВУЗ:
Составители:
Рубрика:
Объектно-ориентированное программирование на С++
памяти new и присваивании адреса этого объекта указателю на базовый
класс:
Student* pStud = new
ContractStudent("Петров Петр Петрович",
2, 2, 1990, 222, 50000.0);
. . .
delete pStud;
При вызове операции delete для уничтожения объекта с помощью
указателя на базовый класс должен вызваться деструктор производного
класса.
Продемонстрируем использование механизма виртуальных функций
на примере класса Group. Теперь все методы класса Student,
переопределенные в классе ContractStudent, будут являться
виртуальными. В классе Group будем хранить массив указателей на
объекты класса Student, которые могут содержать адреса студентов как
бюджетной формы обучения, так и контрактной. В этом случае при
определении списка студентов в группе необходимо указывать, к какому
классу нужно обращаться при создании объекта-студента. Для этого в
методе заполнения FillStudent() запрашивается тип студента
(переменная type) и далее создание объекта происходит в зависимости
от значения этой переменной:
. . .
int type = 0;
while(true)
{
cout << "Введите 1, если студент-бюджетник,
2 - если студент-контрактник";
cin >> type;
if(type == 1 || type == 2)
break;
}
double pay = 0;
if(type == 2)
{
while(true)
{
cout << "Введите размер платы
за обучение в семестре:";
cin >> pay;
if(pay > 0)
break;
109
Объектно-ориентированное программирование на С++
памяти new и присваивании адреса этого объекта указателю на базовый
класс:
Student* pStud = new
ContractStudent("Петров Петр Петрович",
2, 2, 1990, 222, 50000.0);
. . .
delete pStud;
При вызове операции delete для уничтожения объекта с помощью
указателя на базовый класс должен вызваться деструктор производного
класса.
Продемонстрируем использование механизма виртуальных функций
на примере класса Group. Теперь все методы класса Student,
переопределенные в классе ContractStudent, будут являться
виртуальными. В классе Group будем хранить массив указателей на
объекты класса Student, которые могут содержать адреса студентов как
бюджетной формы обучения, так и контрактной. В этом случае при
определении списка студентов в группе необходимо указывать, к какому
классу нужно обращаться при создании объекта-студента. Для этого в
методе заполнения FillStudent() запрашивается тип студента
(переменная type) и далее создание объекта происходит в зависимости
от значения этой переменной:
. . .
int type = 0;
while(true)
{
cout << "Введите 1, если студент-бюджетник,
2 - если студент-контрактник";
cin >> type;
if(type == 1 || type == 2)
break;
}
double pay = 0;
if(type == 2)
{
while(true)
{
cout << "Введите размер платы
за обучение в семестре:";
cin >> pay;
if(pay > 0)
break;
109
Страницы
- « первая
- ‹ предыдущая
- …
- 107
- 108
- 109
- 110
- 111
- …
- следующая ›
- последняя »
