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

Реализация НАСЛЕДОВАНИЯ

07.10.2020, 15:29. Показов 821. Ответов 10
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
1 ) На основании одного ( Handbook ) классу создать походный класс (Student )

2 ) В классе (Student ) реализовать конструктор по умолчанию и
конструктор инициализации.

3 ) класс (Student ) дополнить возрастом студента .

Ребят помогите разобраться ... вроде стараюсь а ошибок больше чем стараний )
Всю Ненужную информацию я закоментировал ..
Мои решения :
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
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
#include <iostream>
using namespace std;
 
 
 
 
class Handbook
{
  //  int Count;
//private:
  //  int h1, h2, h3, h4, h5, h6, h7, h8, h9, h10, h11;
//public:
 
  
// объявление конструктора по умолчанию
//    Handbook();
   // объявление конструктора инициализации 1
//    Handbook(int);
 
//    void List_number(int a1)
//{
 //       h1 = a1;
 //   }
 //   void age(int a2)
  //  {
  //      h2 = a2;
  //  }
  //  void Date_of_Entry(int a3)
  //  {
  //      h3 = a3;
  //  }
   // void Scholarship_amount(int a4)
   // {
  //      h4 = a4;
  //  }
  //  void number_couples_Sunday(int a5)
   // {
   //     h5 = a5;
   // }
   // void Ball_ZNO(int a6)
   // {
   //     h6 = a6;
   // }
   // void score_at_school(int a7)
   // {
   //     h7 = a7;
   // }
   // void group_number(int a8)
   // {
   //     h8 = a8;
   // }
    //void Duration_of_training(int a9)
    //{
   //     h9 = a9;
   // }
   // void phone(int a10)
    //{
    //    h10 = a10;
   // }
   // void List_numb()
   // {
    //    cout << "Номер студента в списке  - " << h1 << endl;
   // }
    //void ag()
   // {
    //    cout << "возраст абитуриента - " << h2 << endl;
   // }
   // void Date_of_Ent()
   // {
   //     cout << "Дата вступу - " << h3 << endl;
   // }
   // void Scholarship_amo()
    //{
    //    cout << "Размер стипендии- " << h4 << endl;
    //}
    //void number_couples_Sund()
    //{
    //    cout << "Количество пар / в неделю - " << h5 << endl;
   // }
   // void Ball_ZNO_ukr()
   // {
   //     cout << "Бал ВНО по укр.мови - " << h6 << endl;
    //}
   // void score_at_sch()
   // {
   //     cout << "Средний балл в школе- " << h7 << endl;
   // }
   // void group_num()
  //  {
  //      cout << "номер группы- " << h8 << endl;
  //  }
  //  void Duration_of_t()
   // {
    //    cout << "продолжительность обучения- " << h9 << "год" << endl;
   // }
   // void phone1()
  //  {
   //     cout << "Телефон  - " << h10 << endl;
   // }
 
    // производный класс – “Студент”
    class Student: public Handbook
    {
      int Studentage;
    public:
        Student();
        Student(float);
        void SetAge(float);
        float GetAge() { return Studentage; }
    };
 
    Student::Student()
        : Handbook()
    {
        Studentage = 0;
    }
    Student::Student(float Studentage)
        : Handbook(Studentage)
    {
 
        SetAge(Studentage);
    }
    void Student::Student(float Studentage)
    {
        this -> Studentage= (Studentage > 0) ? Studentage : 0;
    }
 
};
 
    // реализация конструктора по умолчанию
    //Handbook::Handbook()
    //{
    //    Count = 0;
    //}
    // реализация конструктора инициализации
    //Handbook::Handbook(int Count)
    //{
    //    this->Count = Count;
    //}
    //
// производный класс - "Студент"
#include <conio.h>
#include <iostream>
void  main()
{
    Student Dima;
 
    Dima.SetAge(17);
 
    cout << " Vik studenta : " << Dima.GetAge() << " g" << endl;
 
    //Handbook X; // использовано конструктор по умолчанию
    //Handbook A(10);// использовано конструктор инициализации
    //Handbook d1, d2, d3, d4, d5, d6, d7, d8, d9, d10;
    //d1.List_number(10);
    //d1.List_numb();
    //d2.age(17);
    //d2.ag();
    //d3.Date_of_Entry(2020);
    //d3.Date_of_Ent();
    //d4.Scholarship_amount(980);
    //d4.Scholarship_amo();
    //d5.number_couples_Sunday(19);
    //d5.number_couples_Sund();
    //d6.Ball_ZNO(142);
    //d6.Ball_ZNO_ukr();
    //d7.score_at_school(9);
    //d7.score_at_sch();
    //d8.group_number(308);
    //d8.group_num();
    //d9.Duration_of_training(4);
    //d9.Duration_of_t();
    //d10.phone(123456789);
    //d10.phone1();
    //return 0;
}
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
07.10.2020, 15:29
Ответы с готовыми решениями:

Реализация наследования
Здравствуйте, при решении лабораторной возникла такая проблема: при создании объекта производного класса в конструкторе базового...

Реализация одиночного наследования
Парни, выручайте! а) Создать иерархию классов датчик – абстрактный базовый класс и датчики температуры, влажности и скорости ветра....

Чем отличаются структуры для наследования интерфейса от структур для наследования реализаций?
Дорогие программисты, во первых, хочу поздравить вас с Наступающим новым Годом! Я к вам обращаюсь с маленькой просьбой. Я никак не могу...

10
6772 / 4565 / 1844
Регистрация: 07.05.2019
Сообщений: 13,726
07.10.2020, 16:58
Цитата Сообщение от Dima124 Посмотреть сообщение
Ребят помогите разобраться ... вроде стараюсь а ошибок больше чем стараний )
Покажи-ка задание полностью. А то как-то странно, когда Студент (Student) наследуется от Справочника (Handbook) (Т.е., другими словами, студент - это справочник)
1
0 / 0 / 0
Регистрация: 04.11.2019
Сообщений: 111
08.10.2020, 09:43  [ТС]
oleg-m1973, реализовать иерархию классов (один родительский, два производных)
Ну родительский у меня "справочник студента " а вот производным хотел сделать студент ...
Если вы что-то другое предоставите - буду только рад )
0
6772 / 4565 / 1844
Регистрация: 07.05.2019
Сообщений: 13,726
08.10.2020, 10:27
Цитата Сообщение от Dima124 Посмотреть сообщение
oleg-m1973, реализовать иерархию классов (один родительский, два производных)
Ну родительский у меня "справочник студента " а вот производным хотел сделать студент ...
Если вы что-то другое предоставите - буду только рад )
e]
Сделай родительский класс Персона (Person), производные Студент и Пенсионер.
Либо Траспорт и Автомобиль и Мотоцикл.
1
0 / 0 / 0
Регистрация: 04.11.2019
Сообщений: 111
08.10.2020, 11:19  [ТС]
oleg-m1973, Да, я вас понял ... спасибо
Но хочу разобраться почему код не работает где я пишу ошибки ...
0
6772 / 4565 / 1844
Регистрация: 07.05.2019
Сообщений: 13,726
08.10.2020, 11:23
Цитата Сообщение от Dima124 Посмотреть сообщение
Но хочу разобраться почему код не работает где я пишу ошибки ...
Потому что не надо делать класс Student внутри класса Handbook. Вынеси его наружу
1
0 / 0 / 0
Регистрация: 04.11.2019
Сообщений: 111
08.10.2020, 14:43  [ТС]
oleg-m1973, Здраствуйте ещё раз ... по поводу
Цитата Сообщение от oleg-m1973 Посмотреть сообщение
Вынеси его наружу
Так, сделал но не могу разобраться с ошибками :
1) Ошибка C2533 Student::{ctor}: конструкторы не разрешены для возвращаемого типа
2) Ошибка C2084 функция "Student::Student(float)" уже имеет текст реализации

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
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
#include <iostream>
using namespace std;
 
 
 
 
class Handbook
{
    int Count;
private:
    int h1, h2, h3, h4, h5, h6, h7, h8, h9, h10, h11;
public:
 
    // оголошення конструктора за замовчуванням
    Handbook();
    // оголошення конструктора ініціалізації 1
    Handbook(int);
 
    void List_number(int a1)
    {
        h1 = a1;
    }
    void age(int a2)
    {
        h2 = a2;
    }
    void Date_of_Entry(int a3)
    {
        h3 = a3;
    }
    void Scholarship_amount(int a4)
    {
        h4 = a4;
    }
    void number_couples_Sunday(int a5)
    {
        h5 = a5;
    }
    void Ball_ZNO(int a6)
    {
        h6 = a6;
    }
    void score_at_school(int a7)
    {
        h7 = a7;
    }
    void group_number(int a8)
    {
        h8 = a8;
    }
    void Duration_of_training(int a9)
    {
        h9 = a9;
    }
    void phone(int a10)
    {
        h10 = a10;
    }
    void List_numb()
    {
        cout << "Номер студента в списку  - " << h1 << endl;
    }
    void ag()
    {
        cout << "Вік абітурієнта - " << h2 << endl;
    }
    void Date_of_Ent()
    {
        cout << "Дата вступу - " << h3 << endl;
    }
    void Scholarship_amo()
    {
        cout << "Розмір стипендії - " << h4 << endl;
    }
    void number_couples_Sund()
    {
        cout << "Кількість пар/неділю - " << h5 << endl;
    }
    void Ball_ZNO_ukr()
    {
        cout << "Бал ЗНО з укр.мови - " << h6 << endl;
    }
    void score_at_sch()
    {
        cout << "Середній бал в школі - " << h7 << endl;
    }
    void group_num()
    {
        cout << "Номер групи - " << h8 << endl;
    }
    void Duration_of_t()
    {
        cout << "Тривалість навчання - " << h9 << "років" << endl;
    }
    void phone1()
    {
        cout << "Телефон  - " << h10 << endl;
    }
 
};
// похідний клас – “Студент”
class Student : public Handbook
{
    int Studentage;
public:
    Student();
    Student(float);
    void SetAge(float);
    float GetAge() { return Studentage; }
};
 
Student::Student()
{
    Studentage = 0;
}
Student::Student(float Studentage)
{
    SetAge(Studentage);
}
void Student::Student(float Studentage)
{
    this->Studentage = (Studentage > 0) ? Studentage : 0;
}
 
// реалізація конструктора за замовчуванням
Handbook::Handbook()
{
    Count = 0;
}
// реалізація конструктора ініціалізації
Handbook::Handbook(int Count)
{
    this->Count = Count;
}
//
// похідний клас – “Горобець”
#include <conio.h>
#include <iostream>
int main()
{
    Student Dima;
 
    Dima.SetAge(17);
 
    cout << " Vik studenta : " << Dima.GetAge() << " g" << endl;
 
    Handbook X; // використано конструктор за замовчуванням
    Handbook A(10);// використано конструктор ініціалізації
    Handbook d1, d2, d3, d4, d5, d6, d7, d8, d9, d10;
    d1.List_number(10);
    d1.List_numb();
    d2.age(17);
    d2.ag();
    d3.Date_of_Entry(2020);
    d3.Date_of_Ent();
    d4.Scholarship_amount(980);
    d4.Scholarship_amo();
    d5.number_couples_Sunday(19);
    d5.number_couples_Sund();
    d6.Ball_ZNO(142);
    d6.Ball_ZNO_ukr();
    d7.score_at_school(9);
    d7.score_at_sch();
    d8.group_number(308);
    d8.group_num();
    d9.Duration_of_training(4);
    d9.Duration_of_t();
    d10.phone(123456789);
    d10.phone1();
    return 0;
}
0
6772 / 4565 / 1844
Регистрация: 07.05.2019
Сообщений: 13,726
08.10.2020, 15:01
Цитата Сообщение от Dima124 Посмотреть сообщение
Student::Student(float Studentage)
{
    SetAge(Studentage);
}
void Student::Student(float Studentage)
{
    this->Studentage = (Studentage > 0) ? Studentage : 0;
}
Убери здесь
Цитата Сообщение от Dima124 Посмотреть сообщение
void Student::Student(float Studentage)
{
    this->Studentage = (Studentage > 0) ? Studentage : 0;
}
1
263 / 152 / 33
Регистрация: 29.06.2019
Сообщений: 1,521
08.10.2020, 15:38
Цитата Сообщение от Dima124 Посмотреть сообщение
2) Ошибка C2084 функция "Student::Student(float)" уже имеет текст реализации
тут, например, ясно сказано - уже где-то описали такой конструктор - см строки 116-123
void Student::Student(float Studentage)
{
this->Studentage = (Studentage > 0) ? Studentage : 0;
}
void - нет такого типа конструктора, конструктор даёт объект типа класса, в котором он используется... не знаю, что вы имели ввиду... текст ошибки 1 схож по смыслу с тем, что я уже сказала...
да и почему у ваc age типа float?
и уверены ли вы, что вам нужны сеттеры? - тогда правьте и их...
или используйте список инициализации... (см пример ниже)
почему не послушали ответа oleg-m1973 - своими названиями вносите путаницу в своё понимание смысла наследования...
private члены класса лучше всегда начинать с m_ (member_)...
вобщем сначала научитессь писать конструкторы класса, потом его члены (поля и методы), потом хватайтесь за наследование...
по вашим конструкторам со списком инициализации ниже код:
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
33
34
35
36
37
38
39
40
41
#include <iostream>
#include <conio.h>
 
using namespace std; 
  
class Person
{
    int m_Count;
 
public: 
    Person();
    Person(int); 
};
 
// похідний клас – “Студент”
class Student : public Person
{
    int m_Studentage;
public:
    Student();
    Student(int);
    void SetAge(int);
    float GetAge() { return m_Studentage; }
};
 
Student::Student(): m_Studentage(){}
Student::Student(int Studentage): m_Studentage(Studentage){}
 
Person::Person(): m_Count(){}
Person::Person(int Count) :  m_Count(Count){}
 
 
int main()
{
    Student Oleg;
    Student Dima(17);
    cout << " Vik studenta : " << Oleg.GetAge() << " g" << endl;
    cout << " Vik studenta : " << Dima.GetAge() << " g" << endl;
 
    return 0;
}
Добавлено через 1 минуту
пока писала oleg-m1973 опередил - вобщем про ошибки всё то же, что я вам сказала - учитесь читать ошибки - в них вроде чётко сказано, где проблема...

Добавлено через 6 минут
а судя по вашему Count (так полагаю student'ов) вашего Handbook - вы вообще путаете отношения IS-A(наследование) c HAS-A (агрегация, композиция, но никак не наследование)
1
0 / 0 / 0
Регистрация: 04.11.2019
Сообщений: 111
08.10.2020, 15:42  [ТС]
Спасибо !
0
263 / 152 / 33
Регистрация: 29.06.2019
Сообщений: 1,521
08.10.2020, 16:30
в моём коде 23-я строка - заменить ваш float int GetAge() { return m_Studentage; }
22-ю строку можно убрать или напишите определение сеттера ниже, где методы (лучше свои методы под своим классом, а ещё лучше в свои .h и .cpp файлы каждый класс) - линк на пример сеттера я оставила...

Добавлено через 26 минут
даже по "student" - наследование видно в поиске:
Создать базовый класс Human и производные классы Student и Teacher
Создать базовый класс Human и производные классы Student и Teacher 2
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
08.10.2020, 16:30
Помогаю со студенческими работами здесь

Наследования
Что именно наследует класс-потомок при наследовании? А что не наследует? Чем отличаются private, public и protected наследование?

Наследования
#include &lt;iostream&gt; #include &lt;string&gt; using namespace std; class student { protected: int sem; string name; float...

наследования
Приведите пожалуйста пару примеров наследования.

Пример наследования
Здравствуйте! Снова требуется пример. На сей раз пример наследования. Ничего подходящего пока найти не могу. Допустим, базовый класс и...

Тонкости наследования
Допустим я написал класс, описывающий некую структуру данных, поля которой содержат указатели на этот же класс. Как обернуть структуру в...


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

Или воспользуйтесь поиском по форуму:
11
Ответ Создать тему
Новые блоги и статьи
Символьное дифференцирование
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