![]() |
Модераторы: Poseidon |
![]() ![]() ![]() |
|
Mcicool |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 205 Регистрация: 9.10.2005 Репутация: нет Всего: нет |
Создайте класс с именем CPerson, содержащий три поля типа string для хранения имени, фамилии и отчества.
В классе создайте чистую виртуальную функцию ShowData(), выводящую на экран имя, фамилию и отчество. Далее от класса CPerson с помощью наследования создайте два класса: CStudent, CProfessor. К классу CStudent добавьте дополнительное поле, содержащее средний бал студента. К классу CProfessor три поля: 1)число публикаций профессора, 2) должность (тип - перечисление) - преподаватель, старший преподаватель, доцент, профессор, 3) возраст. Для каждого производного класса переопределите метод ShowData(). В основной программе определите массив (можно не динамический) указателей на объекты класса СPerson. Далее в цикле нужно организовать ввод студентов и профессоров вперемешку. Когда ввод будет закончен, нужно вывести информацию с помощью метода ShowData обо всех людях. Спасибо заранее... |
|||
|
||||
Fazil6 |
|
|||
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1653 Регистрация: 3.5.2006 Где: Минск Репутация: нет Всего: 60 |
Это сообщение отредактировал(а) Fazil6 - 21.5.2007, 13:40 |
|||
|
||||
Xenon |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1529 Регистрация: 12.4.2006 Репутация: 19 Всего: 50 |
Если делать чисто по заданию ... жесть получается
![]() ![]()
Это сообщение отредактировал(а) Xenon - 21.5.2007, 18:07 |
|||
|
||||
Mcicool |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 205 Регистрация: 9.10.2005 Репутация: нет Всего: нет |
Спасибо большое. Но есть вопросы.
--> Xenon. ЗАчем вы использовали свое простарнство имен? Можно ли как нибудь без этого обойтись ? )) Зачем виртуальный деструктоР? И что делает std::for_each(arr, arr + SIZE, std::mem_fun(&CPerson::ShowData) ); строчка? Первый раз вижу. Что делают эти функции? |
|||
|
||||
Xenon |
|
||||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1529 Регистрация: 12.4.2006 Репутация: 19 Всего: 50 |
Mcicool,
1) Пространство имено для того, чтобы объединить по смыслу связанные классы в одно, как бы, целое. Можешь убрать : сотри "using namespace univer_base;" и объявление пространства имен. Думаю смогешь 2) Виртульный деструктор обычно всегда делают в классах, которые замешаны в наследовании для того чтобы правильно особождать ресурсы классов. 3) std::for_each(InIter start, InIter end, Func f) - функция и стандартной библиотеки STL, которая вызывает функцию f для каждого объекта в контейнере, начало которого задается итератором start и конец итератором end (в нашем случае начало контейнера(у нас массив arr) - указатель на его первый элемент, но можем использовать просто имя массива в качестве адресса на первый элемент). std::mem_fun() предназначена для того, чтобы мы имели возможность использовать функции-члены классов в алгоритмах библиотеки STL - просто алгоритмы из этой библиотеки кушают только указатели на свободные функции. Пу сути-то эта строчка эквивалетна строчке:
Просто я уже привык использовать обильно STL ![]() В итоге, если убрать то, что тебя пугает, получится:
|
||||
|
|||||
Mcicool |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 205 Регистрация: 9.10.2005 Репутация: нет Всего: нет |
Последние вопросы, если можно:
1 - virtual void ShowData() = 0; ЗАчем присвоение нуля ?? 2 - Что означает arr[i]->ShowData() ?? 3 - Что делает cin.sync(); ?? |
|||
|
||||
Xenon |
|
||||||||||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1529 Регистрация: 12.4.2006 Репутация: 19 Всего: 50 |
Mcicool,
|
||||||||||
|
|||||||||||
![]() ![]() ![]() |
Правила форума "Центр помощи" | |
|
ВНИМАНИЕ! Прежде чем создавать темы, или писать сообщения в данный раздел, ознакомьтесь, пожалуйста, с Правилами форума и конкретно этого раздела.
Более подробно с правилами данного раздела Вы можете ознакомится в этой теме. Если Вам помогли и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, Poseidon, Rodman |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Центр помощи | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |