- •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));
Void vyvod(avto s, int I)
{ cout <<"MARKA AVTO :"<< s.marka << endl;
if (i<2) cout <<"CENA AVTO :"<< s.cena.icena << endl;
else cout <<"CENA AVTO :"<< s.cena.fcena << endl;
cout <<"RASHOD NA 100 km. :"<< s.rashod << endl;
cout <<"_____________"<< endl;
}
Int main()
{ avto A1[3];
cin >> A1[0].marka >> A1[0].cena.icena >> A1[0].rashod;
cin >> A1[1].marka >> A1[1].cena.icena >> A1[1].rashod;
cin >> A1[2].marka >> A1[2].cena.fcena >> A1[2].rashod;
for (int i=0; i<3; i++) VYVOD(A1[i],i);
cout <<"RAZMER MASSIVA A1 = "<<sizeof(A1) << endl;
cout <<"RAZMER ELEMENTA A1[0] = "<<sizeof(A1[0]) << endl;
cout <<"RAZMER ELEMENTA A1[2] = "<<sizeof(A1[2]) << endl;
cout <<"Cena avtomobilya "<< A1[1].marka <<" = "
<< A1[1].cena.icena << endl;
cout <<"Cena avtomobilya "<< A1[2].marka <<" = "
<< A1[2].cena.fcena << endl;
return 0;
}
4.Правила объявления класса в языке C++.
Класс представляет собой определяемый пользователем тип данных, который обычно содержит переменные-члены и функции-члены с определенными разделенными правами доступа (!!!).
Например: (ранее мы использовали structavto {…}, теперь определим соответствующий класс)
classavto {
char name [15];
Intcena;
double rashod;
};
Int main()
{ …
avto a1; // объявлениеобъекта a1 класса avto
a1.cena=12600; // будет ошибка, т.к. доступ закрыт
…}
В данном случае будет фиксироваться ошибка, поскольку при выполнении оператора присваивания a1.cena=12600 осуществляется попытка доступа к закрытой переменной-члену класса avto. В этом варианте необходимо перед charname [15] записать public:.
Итак, можно сказать, что класс – это тип, переменные которого являются объектами (или экземплярами класса). При определении классов должен использоваться следующий синтаксис:
сlassимя_класса {
public:
член_класса_1; открытые члены класс
private:
член_класса_n+1; закрытые члены класса
};
Каждая строка вида член_класса_i представляет либо объявление переменной-члена класса, либо прототип функции-члена, либо объявление функции-члена. Отметим, что в определении класса может находиться любое количество ключевых слов public и private.
При определении класса рекомендуется объявлять закрытымипеременные-члены и объявлять открытымифункции-члены, которые обеспечивают доступ к закрытым членам класса.Среди функций-членов класса отдельно выделяют конструкторы и деструктор. Конструкторы и деструкторы подразделяются наявные и неявные.
5. Конструкторы и деструкторы класса в языке C++.
Неявные конструкторы и деструкторы формируются компилятором автоматически. Неявный конструктор всегда автоматически запускается на выполнение в момент определения объекта и формирует “заготовку” объекта в памяти компьютера.
После этого автоматически запускается явный конструктор (при условии, что он существует). Явный конструктор позволяет “внести” программисту нужные дополнения в ранее сформированную неявным конструктором “заготовку” объекта. Разрешается предусматривать перегрузку конструкторов, что обеспечивает максимально гибкий механизм для формирования объектов.
!!! Таким образом, в классе разрешается определять несколько перегружаемых конструкторов.
Неявный деструктор всегда автоматически запускается при достижении конца блока, в котором определен соответствующий объект. Он освобождает память, занимаемую элементами объекта. В классе можно определить один явный деструктор, который автоматически вызывается перед выполнением неявного деструктора.
Чаще всего функции-члены класса, включая конструкторы и деструкторы, определяются вне тела класса. Однако допускается и внутри. Если функция-член определяется вне класса, то, во-первых, внутри класса объявляется прототип, и, во-вторых, определение функции начинается с имени класса, за которым следует оператор разрешения области видимости:: (два подряд двоеточия), а далее размещается имя функции и ее параметры.
!!! Отметим, что конструктор имеет тоже имя, что и соответствующий класс, а имя деструктора также совпадает с именем класса, но перед первым символом ставится ~ (тильда). Отметим, что в заголовках конструкторов и деструкторов отсутствует указание на тип возвращаемого значения. Механизмы вызова конструктора и деструктора отличаются от механизма вызова обычной функции-члена класса.
Демонстрируется использование явного
// конструктора и явного деструктора класса.
// !!! Любой функции-члену класса (включая конструкторы и деструкторы) доступна переменная-член этого класса,т.е. любому методу класса напрямуюдоступно любое поле этого класса
#include<iostream>
usingnamespace std;
class avto
{
public: avto();// прототип явного конструктора
класса avto
~avto(); // прототип явного деструктора класса avto
private:
char marka[15];