- •1.Краткий обзор агрегатного типа struct.
- •Intcena;
- •Int main()
- •Int cena;
- •Void vyvod(avto s)
- •Int main()
- •3.Понятие объединения union.
- •Void vyvod(avto s, int I)
- •Int main()
- •Intcena;
- •Int main()
- •Int cena;
- •Intmain()
- •Void reset(); …
- •Void Demo::reset() // определениефункции reset( )
- •9.Пример реализации класса для организации обработки символьной строки.
- •Int demochar::length()
- •Int main()
- •10.Пример реализации класса для организации обработки одномерного массива целочисленных значений.
- •11.Инициализация объектов.
- •Int main()
- •12Указатель this.
- •13.Постоянные функции-члены класса.
- •3. Class avto {
- •15. Int main()
- •14.Массив объектов.
- •3. Class avto {
- •24. Int main() {
- •15.Статические переменные-члены и функции-члены класса.
- •17. Staticint GetSumCena() { return SumCena; };
- •19. Staticint SumCena;
- •16 Дружественные функции.
- •8. Friendvoid GetFields(avto&);
- •17 Класс, содержащий переменную-член типа класс.
- •3. Class Date_Avto {
- •16. Class avto {
- •30. Int main()
- •18 Сложность больших программных систем.
- •19 Пять признаков сложной системы.
- •20 Роль декомпозиции, абстракции, иерархии при построении сложных систем.
- •21 Объектная модель.
- •Ood основывается на объектно-ориентированной декомпозиции;
- •25Пример программы с наследованием классов.
- •3. Class avto {
- •18. Class gruz_avto : public avto {
- •36. Int main(){
- •26 Переопределение функций-членов внутри производного класса.
- •3. Class avto {
- •18. Class gruz_avto : public avto {
- •30. Int main()
- •5.Classint_Matrix// класс для обработки целочисленной матрицы
- •45. Int main()
- •Int main()
- •2. Usingnamespace std;
- •3. Int main()
- •18. Return 0;
- •Int main()
- •20. F.Write((char*)&s,sizeof(s));
- •7. Intcena;
- •21. F.Write((char*)&s,sizeof(s)); };
- •22. F.Close();
- •25. F.Seekg(sizeof(s), ios_base::beg);
- •26. F.Read((char*)&s,sizeof(s));
25Пример программы с наследованием классов.
Рассмотрим пример, в котором демонстрируется работа механизма наследования классов в языке С++:
1. #include<iostream>
2. usingnamespace std;
3. Class avto {
4. public:
5. avto();
6. ~avto();
7. void setname(char* name1){ name=name1;}
8. void setcena(int cena1) {cena=cena1;}
9. void setrashod(double rashod1) {rashod=rashod1;}
10. int getcena() {return cena;}
11. char* getname() {return name;}
12. double getrashod() {return rashod;}
13. protected:
14. char* name;
15. int cena;
16. double rashod;
17. };
18. Class gruz_avto : public avto {
19. public:
20. gruz_avto();
21. ~gruz_avto();
22. void setgruzopodemnost(double grpodemn1)
23. {grpodemn=grpodemn1;}
24. double getgruzopodemnost() {return grpodemn;}
25. private:
26. double grpodemn;
27. };
28. avto::avto() {cena=27500; name="MAZ"; rashod=18.5;
29. cout <<"Class avto !!!"<< endl;};
30. avto::~avto(){
31. cout <<"Object avto-class destroy! Address of name_avto is "
32. <<&name <<" RASHOD "<< rashod << endl;};
33. gruz_avto::gruz_avto(){grpodemn=15.6; rashod=16.5;
34. cout <<"Class gruz_avto !!!"<< endl;}
35. gruz_avto::~gruz_avto()
{cout <<"Object gruz_avo-class destroy!"<< endl;}
36. Int main(){
37. char navto[20];
38. cout <<"Input marka avto : "; cin >> navto;
39. avto a;
40. a.setname(navto); a.setrashod(11.5);
41. cout << a.getcena() << endl << a.getname() << endl
42. << a.getrashod()<< endl;
43. gruz_avto c;
44. c.setcena(23500);
45. cout << c.getcena() << endl << c.getname() << endl
46. << c.getrashod() << endl << c.getgruzopodemnost() << endl;
47. return 0;
48. }
В строках с 3 по 17 включительно размещается объявление класса avto, который в дальнейшем используется в качестве базового класса при объявлении класса gruz_avto. Отметим, что при объявлении класса avto предусмотрено объявление явного конструктора (см. 5 стр.) и явного деструктора (см. 6 стр.), которые соответственно определяются в 28-32 строках включительно.
В строках с 18 по 27 включительно представлено объявление производного класса gruz_avto, внутри которого объявляются явный конструктор (см. 20 стр.) и явный деструктор (см. 21 стр.).
В строках с 36 по 48 приведено описание функции main(). В начале ее выполнения предусматривается запрос на ввод наименования марки автомобиля. Далее в 39 строке определяется объект a класса avto, а в 40 строке методом setname() это имя заносится в поле name объекта a. При определении объектаа запускаются автоматически сначала неявный конструктор, а затем явный конструктор, который определен в 28-29 строках. В строках 41-42 предусмотрен вывод значений полей объекта а.
В строке 43 определяется объект c и при этом сначала запускаются конструкторы (неявный + явный) базового класса avto, а затем неявный + явный конструкторы производного класса gruz_avto, а потому на экране появятся соответствующие сообщения (см. 29 и 34 строки).
В конце выполнения программы будут автоматически вызываться деструкторы, причем для объекта c вначале вызываются явный + неявный деструкторы производного класса gruz_avto, а потом явный + неявный деструкторы базового класса avto.