Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.67/55: Рейтинг темы: голосов - 55, средняя оценка - 4.67
0 / 0 / 0
Регистрация: 13.11.2016
Сообщений: 9

Создать базовый класс «Учащийся» и производные классы «Школьник» и «Студент»

31.01.2017, 16:12. Показов 11006. Ответов 7
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Создать базовый класс «Учащийся» и производные классы «Школьник» и «Студент». Создать массив объектов базового класса и заполнить этот массив объектами. Показать отдельно студентов и школьников.
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
31.01.2017, 16:12
Ответы с готовыми решениями:

Создать класс - данные - абстрактный базовый класс. Создать производные классы
Всем привет! У меня вот такая проблема.... Создать класс - данные - абстрактный базовый класс. Создать производные классы - данные типа...

Класс: Создать базовый класс «работник фирмы» и производные классы «стажер», «руководящий сотрудник», «директор»...
Всем привет, помогите пожалуйста, я уже всю голову сломал, не знаю как решить ее... Создать базовый класс «работник фирмы» и...

Создать базовый класс «Учащийся» и производные классы «Школьник» и «Студент»
Создать базовый класс «Учащийся» и производные классы «Школьник» и «Студент». Создать массив объектов базового класса и заполнить этот...

7
Форумчанин
Эксперт CЭксперт С++
 Аватар для MrGluck
8216 / 5047 / 1437
Регистрация: 29.11.2010
Сообщений: 13,453
31.01.2017, 16:36
Лучший ответ Сообщение было отмечено Netyb как решение

Решение

Вариант С++14:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
#include <iostream>
#include <memory>
 
class Learner
{
public:
    virtual constexpr const char* name() const noexcept = 0;
};
 
class Schoolboy : public Learner
{
public:
    constexpr const char* name() const noexcept override final { return "schoolboy"; };
};
 
class Student : public Learner
{
public:
    constexpr const char* name() const noexcept override final { return "student"; };
};
 
int main()
{
    const std::unique_ptr<Learner> arr[] = {
        std::make_unique<Schoolboy>(),
        std::make_unique<Student>(),
        std::make_unique<Schoolboy>(),
        std::make_unique<Student>()
    };
    for (const auto &p : arr)
        std::cout << p->name() << std::endl;
}
3
859 / 448 / 112
Регистрация: 06.07.2013
Сообщений: 1,491
31.01.2017, 17:08
Цитата Сообщение от MrGluck Посмотреть сообщение
virtual constexpr const char* name()
а зачем тут constexpr ?
1
Форумчанин
Эксперт CЭксперт С++
 Аватар для MrGluck
8216 / 5047 / 1437
Регистрация: 29.11.2010
Сообщений: 13,453
31.01.2017, 17:10
Цитата Сообщение от Raali Посмотреть сообщение
а зачем тут constexpr ?
Именно в базовом классе можно без него. Я уже после публикации заметил, но потом решил оставить, он ни на что не влияет.
0
859 / 448 / 112
Регистрация: 06.07.2013
Сообщений: 1,491
31.01.2017, 17:14
Просто кажется по стандарту нельзя чтобы constexpr функция была виртуальной)
0
Форумчанин
Эксперт CЭксперт С++
 Аватар для MrGluck
8216 / 5047 / 1437
Регистрация: 29.11.2010
Сообщений: 13,453
31.01.2017, 17:21
По стандарту C++14
7.1.5 The constexpr specifier
The definition of a constexpr function shall satisfy the following constraints:
(3.1) — it shall not be virtual (10.3);
Так что всё-таки лучше без constexpr.

Добавлено через 36 секунд
Цитата Сообщение от Raali Посмотреть сообщение
Просто кажется по стандарту нельзя чтобы constexpr функция была виртуальной)
Да, вы правы. Надо было проверить наверняка.
0
0 / 0 / 0
Регистрация: 13.11.2016
Сообщений: 9
31.01.2017, 18:28  [ТС]
Так что нужно изменить в коде?

Добавлено через 34 секунды
Цитата Сообщение от MrGluck Посмотреть сообщение
По стандарту C++14

Так что всё-таки лучше без constexpr.

Добавлено через 36 секунд

Да, вы правы. Надо было проверить наверняка.
Так что в коде изменить нужно?
0
Форумчанин
Эксперт CЭксперт С++
 Аватар для MrGluck
8216 / 5047 / 1437
Регистрация: 29.11.2010
Сообщений: 13,453
31.01.2017, 18:31
Лучший ответ Сообщение было отмечено Netyb как решение

Решение

Цитата Сообщение от Netyb Посмотреть сообщение
Так что в коде изменить нужно?
C++
1
2
3
4
5
class Learner
{
public:
    virtual const char* name() const noexcept = 0;
};
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
31.01.2017, 18:31
Помогаю со студенческими работами здесь

Создать базовый класс «Учащийся» и производные классы «Школьник» и «Студент»
При выполнении данной работы необходимо определить базовый класс и производные от него классы. Предусмотреть передачу аргументов...

Создать базовый абстрактный класс Фигура и производные классы
Создать базовый абстрактный класс - фигура, и производные класс - круг, прямоугольник, трапеция. Определить абстрактные функции площадь,...

Создать абстрактный класс Stud и производные классы Студент и Преподаватель
Вот что сделал, помогите с определением возраста на момент текущей даты. Создать абстрактный класс Stud с методами, позволяющим вывести...

Создать абстрактный базовый класс Figure с виртуальной функцией Периметр. Создать производные классы Rectangle
Создать абстрактный базовый класс Figure с виртуальной функцией -периметр.Создать производные классы Rectangle, Circle,Triangle,Rhomb в...

Создать абстрактный базовый класс с виртуальной функцией - сумма прогрессии. Создать производные классы: ариф
Здравствуйте, помогите разобраться с задачей Создать абстрактный базовый класс с виртуальной функцией - сумма прогрессии. Создать...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
Новые блоги и статьи
Символьное дифференцирование
igorrr37 13.02.2026
/ * Программа принимает математическое выражение в виде строки и выдаёт его производную в виде строки и вычисляет значение производной при заданном х Логарифм записывается как: (x-2)log(x^2+2) -. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL3_image
8Observer8 10.02.2026
Содержание блога Библиотека SDL3_image содержит инструменты для расширенной работы с изображениями. Пошагово создадим проект для загрузки изображения формата PNG с альфа-каналом (с прозрачным. . .
Установка Qt-версии Lazarus IDE в Debian Trixie Xfce
volvo 10.02.2026
В общем, достали меня глюки IDE Лазаруса, собранной с использованием набора виджетов Gtk2 (конкретно: если набирать текст в редакторе и вызвать подсказку через Ctrl+Space, то после закрытия окошка. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru