- •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));
17. Staticint GetSumCena() { return SumCena; };
18. private:
19. Staticint SumCena;
20. char* name;
21. int cena;
22. double rashod;
23. };
24. int avto::SumCena = 0;
25. int main()
26. {avto a[4] = {avto(14500,10), avto(), avto(18500), avto()};
27. cout <<"RAZMER MASSIVA = "<<sizeof(a) << endl
28. <<"RAZMER ELEMENTA MASSIVA = "<<sizeof(a[0]) << endl;
29. a[0].Output();
30. a[1].Output();
31. a[2].Output();
32. a[3].Output();
33. cout <<"TOTAL: "<< avto::GetSumCena() << endl;
34. return 0;
35. }
16 Дружественные функции.
Традиционно в качестве средств доступа к членам класса выступают общедоступные методы, т.е. функции-члены раздела public:. Такое ограничение часто является жестким, а потому в языке С++ был реализован механизм использования дружественных функций. В этом случае предусматривается, что внутри класса могут размещаться прототипы функций, которые не будут являться членами класса, а будут выступать в роли дружественных. В прототипе при этом перед заголовком соответствующей функции размещается служебное слово friend.
1. #include<iostream>
2. usingnamespace std;
3. class avto {
4. public:
5. avto(): cena(8700),rashod(9.2) {name="Lada";} //конструктор
6. ~avto(){cout <<"Object destroy!!! "<< endl;} // деструктор
7. void SetRashod(double rashod1) {rashod=rashod1;}
8. Friendvoid GetFields(avto&);
9. private:
10. char* name;
11. int cena;
12. double rashod;
13. };
14. void GetFields(avto& a)
15. { cout << "CENA -> "<< a.cena << endl <<
16. "MARKA -> "<< a.name << endl <<
17. "RASHOD -> "<< a.rashod << endl;
18. }
19. int main()
20. { avto B; B.SetRashod(11.7); GetFields(B);
21. avtoF; GetFields(F);
22.return 0;
23. }
В строках с 3 по 13 включительно определен класс avto. Внутри определения класса присутствует прототип дружественной функции GetFields() (см. стр. 8). Определение дружественной функции GetFields() размещается в 14-18 строках. Отметим, что при определении этой функции в заголовке не нужно указывать имя соответствующего класса.
17 Класс, содержащий переменную-член типа класс.
Иногда возникает необходимость внутри класса определить переменную-член (поле), которая является экземпляром другого класса. Рассмотрим пример, в котором определяется класс avto, содержащий три ранее используемых поля name, cena и rashod, и еще одно поле date_vypuska, которое будет иметь тип classDate_Avto.
1. #include<iostream>
2. usingnamespace std;
3. Class Date_Avto {
4. public:
5. Date_Avto() : day(1), month("May"), year(2010)
6. { cout <<"HELLO from Date_Avto !!!"<< endl; }
7. ~Date_Avto() { cout <<"OBJECT Date_Avto destroy !!!"
8. << endl; }
9. void OutPut() { cout << day <<'-'<< month <<'-'
10. << year << endl; }
11. private:
12. int day;
13. char* month;
14. int year;
15. };