- •1)Указатели.
- •3) Инициализация указателей
- •4) Понятие класса. Описание класса (Паскаль). Поля и методы. Пример
- •5) Операции с указателями
- •7) Массивы. Описание одномерных и многомерных массивов, инициализация.
- •8) Описание объектов (экземпляров класса) Способы обращения к полям объекта. (Паскаль).
- •9) Ввод и вывод массивов, два способа: с выбором элемента по индексу и с выбором элемента по указателю.
- •11) Типы данных, определяемые пользователем: перечисления.
- •12) Константный указатель на вызвавший метод объект (self ) (Паскаль).
- •13) Типы данных, определяемые пользователем: структуры.
- •15)Типы данных, определяемые пользователем: объединения.
- •16) Конструктор и деструктор, их свойства (Паскаль).
- •17) Функции. Объявление и определение, заголовочные файлы в с и предописания (forward) в Паскале.
- •19) . Способы обмена данными: с помощью глобальных переменных.
- •21) Способы обмена данными: Возвращаемое значение.
- •23) Способы обмена данными: Параметры функции.
- •24) Виртуальные методы и абстрактные классы.
- •25) Передача параметров по значению и по адресу.
- •30) Delphi nenado
- •31) Перегрузка функций.
- •40) Код проекта. Nenado
15)Типы данных, определяемые пользователем: объединения.
Объединение (union) представляет собой частный случай структуры, все поля которой располагаются по одному и тому же адресу. Формат описания такой же, как у структуры, только вместо ключевого слова struct используется слово union. Длина объединения равна наибольшей из длин его полей. В каждый момент времени в переменной типа объединение хранится только одно значение, и ответственность за его правильное использование лежит на программисте. Объединения применяют для экономии памяти, а также для разной интерпретации одного и того же битового представления:
struct Options {
bool centerX:1;
bool centerY:1;
unsigned int shadow:2;
unsigned int palette:4;
};
union {
unsigned char ch;
Options bit;
}option={0xC4};
cout << option.bit.palette;
option.ch &= 0xF0;// наложение маски
По сравнению со структурами на объединения налагаются некоторые ограничения: объединение может инициализироваться только значением его первого элемента; объединение не может содержать битовые поля; объединение не может содержать виртуальные методы, конструкторы, деструкторы и операцию присваивания; объединение не может входить в иерархию классов.
16) Конструктор и деструктор, их свойства (Паскаль).
Конструкторы и деструкторы являются специализированными формами методов. Используемые в связи с расширенным синтаксисом стандартных процедур New и Dispose, конструкторы и деструкторы обладают способностью размещения и удаления динамических объектов. Кроме того, конструкторы имеют возможность выполнить требуемую инициализацию объектов, содержащих виртуальные методы. Как и все другие методы, конструкторы и деструкторы могут наследоваться, а объекты могут содержать любое число конструкторов и деструкторов
Конструкторы используются для инициализации вновь созданных объектов. Обычно инициализация основывается на значениях, передаваемых конструктору в качестве параметров. Конструктор не может быть виртуальным, так как механизм диспетчеризации виртуального метода зависит от конструктора, который первым совершил инициализацию объекта.
Приведем несколько примеров конструкторов:
constructor Field.Copy(var F: Field);
begin
Self := F;
end;
constructor Field.Init(FX, FY, FLen: integer; FName: string);
begin
X := FX;
Y := FY;
GetMem(Name, Length (FName) + 1);
Name^ := FName;
end;
constructor TStrField.Init(FX, FY, FLen: integer; FName: string);
begin
inherited Init(FX, FY, FLen, FName);
Field.Init(FX, FY, FLen, FName);
GetMem(Value, Len);
Value^ := '';
end;
Главным действием конструктора порожденного (дочернего) типа, такого как указанный выше TStrField.Init, почти всегда является вызов соответствующего конструктора его непосредственного родителя для инициализации наследуемых полей объекта. После выполнения этой процедуры, конструктор инициализирует поля объекта, которые принадлежат только порожденному типу.
Деструкторы ("сборщики мусора") являются противоположностями конструкторов и используются для очистки объектов после их использования. Обычно очистка состоит из удаления всех полей-указателей в объекте. Примечание: Деструктор может быть виртуальным и часто является таковым. Деструктор редко имеет параметры. Приведем несколько примеров деструкторов:
destructor Field.Done;
begin
FreeMem(Name, Length (Name^) + 1);
end;