- •Синтаксис языка.
- •Директивы препроцессора.
- •Константы.
- •Типы данных.
- •If (условие)
- •Массивы.
- •Указатели.
- •Ссылки.
- •Структуры.
- •Оператор.
- •Структуры.
- •Функции - элементы, дружественные функции, константные функции.
- •Конструкторы и деконструкторы.
- •Шаблоны класса.
- •Доступ к бд через ms Active X Data Object (ado).
Структуры.
Операция → обеспечивает доступ к элементу структуры через указатель на объект.
Пример:
TPers = & TPers
PPers →Sex = true;
Cамоадресуемые структуры:
Не редко в памяти надо динамически размещать последовательность структур, как бы формирую некий фрагмент БД, предназначенный для операторного анализа и обработки.
Struct TPers
{AnsiString FIO;
bool Sex;
int Voz;
TPers * Pr;
}
Пример: пример формирования в памяти списка структур. Для этого надо 3 переменных:
TPers * Po = null; *Pnew; *Oold;
Вставка структур в список:
Pnew = new TPers; - выделяем память под новую структуру.
Pnew→ FIO = ‘Иванов И. И.’
Pnew→ Sex = true
…………………..
if (Po = = null) Po = Pnew; - проверяем Po на указание первой структуры.
Else Pold→Pr = Pnew;
Pold = Pnew;
Сформировав список в памяти его легко просматривать, проходя в цикле по указателям.
Проверяем не равно ли Pnew = Po
Pnew = Po;
While (Pnew !=null)
{Show Message (Pnew→ FIO);
Pnew = Pnew→Pr
}
Классы.
Это тип данных, определенный пользователем. В С++ имеется множество предопределенных классов (AnsiString). Класс должен быть объявлен до того, как будет объявлена хотя бы одна переменная этого класса.
Class <имя класса>: <cписок классов родителей>
{public: // доступна всем; <данные, методы, свойства, события>
published: // видны в инспекторе объектов и изменяемые <данные, свойства>
protected:// доступна только потомкам < данные, методы, свойства, события >
private:// доступна только в классе <данные, методы, свойства, события>
}
Если объявляемый класс не имеет предшественников, то список классов родителей вместе с предшествующим : - отпускается.
Пример:
Class MyClass: Class1, Class2
{ public:
MyClass (Int=0);
Void SetA(int);
Int GetA(void);
Int Fa;
Protected:
}
int F(int);
Доступ можно получить только функция MyClass, SetA, GetA. Поля Fa и функция F – закрытые элементы.
Открытая функция MyClass с именем, совпадающим с именем класса – это конструктор класса, который должен инициализировать данные в момент создания объекта класса. Присутствие конструктора в объявлении класса не обязателен. При этом пользователь сам должен создать начальное значение данным элементам класса. Объявление данных элементов (полей) выглядит также как объявление переменных или объявление полей в структурах.
После того, как класс объявлен можно создать объекты этого класса.
Пример:
MyClass Мс, Мс10[10], * PMc
Создается объект Mc, объявленного выше класса MyClass, массив Мс10 из 10 объектов данного класса и указатель PMc на объект этого класса. Создание объектов класса простым объявлением переменных, возможно только в случае, если среда предков класса, нет классов библиотеки компонента С++. Если же такие предки есть, то создание указателя на объект этого класса возможно только операцией new/
Пример:
Class MyClass2: Tobject
{…}
MyClass * P2 = new MyClass2
Функции - элементы, дружественные функции, константные функции.
Поля данных, исходя из принципа инкапсуляции всегда должны быть защищены от несанкционированного доступа. Доступ к ним как правило должен осуществляться только через эти функции, включающие методы чтения и записей полей. В этих функциях должна осуществляться проверка данных, чтобы не записать случайно в поля неверные данные.
Class MyClass
{ public:
Void SetA(int);
Int GetA(void);
Private:
Int Fa;
}
Реализация функции чтения и записи может иметь вид
Void MyClass:: SetA (Int value)
{if (…) // проверка
{Fa = value;}
}
Int MyClass:: GetA(void);
{return Fa;}
В приведенном примере объявление класса содержит только прототипы функций, а их реализация вынесена из описания класса. Все описания функций элементов содержит ссылку на класс с помощью операции области действия (::).
Функции элемента класса имеют доступ к любым другим функциям – элементам и к любым данным – элементам как к открытым, так и к закрытым.
Клиенты класса (внешние функции) имеют доступ только к открытым функциям – элементам и данным – элементам.
Чтобы дать доступ внешним функциям, к закрытым полям класса функцию нужно объявить как друга класса с помощью спецификации Friend.
Пример:
Friend void int Fa (MyClass * )
В программе:
Void int Fa (MyClass * P)
{ P→ Fa++}
Через Р доступ к Fa.
Дружественными могут быть не только функции, но и целые классы. Иногда требуется создать объект класса как константный с помощью идентификатора const.
Чтобы не возникло ошибок при компиляции нужно снабдить все функции – элементы класса, предназначенные для чтения данных спецификаторами const.
Пример:
Int GetA(void) const – описание
……………..
Int MyClass :: GetA(void) const
{return Fa;} – реализация
