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
| #pragma once
#pragma once
#include <iostream>
using namespace std;
class Man
{
protected:
string name; //поле - имя
int age; //поле - возраст
string gender; //поле - пол
double weight; //поле - вес
public:
Man(string str = "Ivan", int a = 0, string str1 = "m", double b = 0)
: name(str)
, age(a)
, gender(str1)
, weight(b){}; //конструктор с умолчанием
void set_Man(string, int, string, double); //установка параметров человека
void set_name(string n)
{
name = n;
}
void set_age(int a)
{
age = a;
}
void set_gender(string g)
{
gender = g;
}
void set_weght(double w)
{
weight = w;
}
string get_name()
{
return name;
} //получение name
int get_age()
{
return age;
} //и т.д.
string get_gender()
{
return gender;
}
double get_weight()
{
return weight;
}
friend istream& operator>>(istream& stream, Man& ob); //прототип вставки в поток
friend ostream& operator<<(ostream& stream, Man& ob); //прототип извлечения из потока
};
-------- -
#include "Man.h"
#include <iostream>
#include <cstdio> //для работы со строками и использования gets()
#include <string>
using namespace std;
void Man::set_Man(string n, int a, string g, double w)
{
name = n;
age = a;
gender = g;
weight = w;
}
ostream& operator<<(ostream& stream, Man& ob)
{
stream << "Человек (Имя, возраст, пол, вес: " << ob.name << ", " << ob.age << ", " << ob.gender
<< ", " << ob.weight << ", ";
return stream;
}
istream& operator>>(istream& stream, Man& ob)
{
stream >> ob.name >> ob.age >> ob.gender >> ob.weight;
return stream;
}
// Student наследует Man
class Student : public Man
{
protected:
int year; //поле - года обучения
public:
Student(string name = "Ivan", int age = 0, string gender = "m", double weight = 0.0,
int y = 0); //конструктор с умолчанием
void set_year(int y)
{
year = y;
} //установка года обучения
int get_year()
{
return year;
} //возвращение года обучения
// friend Student operator++ ();
friend istream& operator>>(istream& stream, Student& ob); //прототип вставки в поток
friend ostream& operator<<(ostream& stream, Man& ob); //прототип извлечения из потока
};
Student::Student(string n, int a, string g, double w, int y)
: Man(n, a, g, w)
{
year = y;
}
Student Student::operator++() //увеличение года обучения
{
return Student(name, age, gender, weight, this->year++);
}
ostream& operator<<(ostream& stream, Student& ob)
{
stream << "Человек (Имя, возраст, пол, вес, год обучения: \n" << ob.name << ", " << ob.age
<< ", " << ob.gender << ", " << ob.weight << ", ";
return stream;
}
istream& operator>>(istream& stream, Student& ob)
{
stream >> ob.name >> ob.age >> ob.gender >> ob.weight;
return stream;
}
#include "Man.h"
#include <iostream>
#include <cstdio> //для работы со строками и использования gets()
#include <string>
using namespace std;
int main()
{
setlocale(LC_ALL, "Russian");
cout << "Введите данные человека (имя, возраст, пол, вес) для класса Man: \n";
Man person1;
string name;
int age;
string gender;
double weight;
cout << "Введите имя:";
cin >> name;
cout << "возраст:";
cin >> age;
cout << "пол:";
cin >> gender;
cout << "вес:";
cin >> weight;
person1.set_Man(name, age, gender, weight);
cout << person1.get_name() << " " << person1.get_age() << " " << person1.get_gender() << " "
<< person1.get_weight() << endl;
return 0;
} |