- •1) Структурные типы данных и переменные этих типов .-
- •2) Передача структурных переменных функциям .-
- •3)Указатели на структурные переменные .
- •4) Массивы структурных переменных .
- •6)Поля битов. Средство typedef-
- •7) Понятие макроподстановки .
- •8) Включение файлов .
- •9)Условная компиляция.
- •12)Обработка двоичных файлов . Последовательный и произвольный доступ.
- •2)Произвольный доступ.
- •13)Аргументы используемые по умолчанию .-
- •14)Использование ссылок .
- •15)Встроенные функции.-
- •16)Операция разрешения видимости .(::)
- •17)Пространства имен.
- •18)Перегруженные функции.-
- •20)Определение классов.
- •21)Элементы класса.
- •22) Способы доступа к элементам класса .
- •23) Конструктор и деструктор.
- •24) Конструктор копии . Операция присваивания.-
- •25) Преобразование объектов класса в другие типы и их получение из других типов .
- •26)Перегрузка операций .
- •27)Дружественные функции.
- •28)Наследование классов .
- •29)Обработка исключительных ситуаций .
- •30)Визуалка.
24) Конструктор копии . Операция присваивания.-
Конструктор копий вызывается всякий раз , когда представитель класса при создании инициализируется при помощи уже существующего представителя этого класса . Если конструктор копий не предусмотрен , то будет сгенерирован конструктор копий по умолчанию , который
создаст новую точную копию .
Class proverka {int a,b;
Public : proverka (int aa,int bb):a(aa);b(bb){}
Proverka (const proverka &sonya)
{a=sonya.a;
B=sonya.b+6666;}
};
Void main(){
Proverka sasha (25;25);
Proverka elkin=sasha;}
Операция присваивания является функцией элемента с именем operator= , которая принимает в качестве параметра ссылку или константную ссылку на представитель класса . Операция присваивания вызывается компилятором , когда уже существующему представителю класса присваивается в качестве значения еще существующий представитель класса . Если операция присваивания не создана , то присваивание осуществляет копирование .
25) Преобразование объектов класса в другие типы и их получение из других типов .
Объект класса можно преобразовывать в другие типы с помощью операций приведений типа :
A=(float)t/5;
В классе можно определять элементы функций , которые будут обеспечены явным преобразованием типа данного класса в другие типы . Заголовок имеет вид : operator имя_типа ().
Процедура преобразования не может иметь параметр и для нее нет необходимости определять тип возвращаемого значения .
26)Перегрузка операций .
Язык Си++ позволяет переопределять для классов существующие обозначения операций . В Результате для классов можно использовать операции привычные для базовых типов . Обычно программисты стараются перегружать таким образом , чтобы смысл знаков операций не менялся .
Функции операций , реализующие перегрузку операций имеют вид :
тип возвращаемого значения_operator_знак операции (операнды).
Если функция является элементом класса , то первый операнд соответствующей операции будет самим объектом для которого вызвана функция операции . В случае унарной операции список параметров будет пуст , для бинарной имеет 1 параметр , соответствующий второму операнду .
Если функция операции не является элементом класса , она будет иметь 1 параметр в случае унарной , и 2 в случае бинарной . Тернарная не может быть перегружена . Приоритет и правило вычисления остается для перегруженных таким же , что и для операций над встроенными типами . Поведение операции по отношению к встроенному типу изменить нельзя . Если функция операция не является членом класса , то хотя бы 1 из ее параметров должен быть типом класса . Аргументов по умолчанию функция операция иметь не может .
Class proverka {int a,b;
Public:proverka (i(nt aa,int bb):a(aa);b(bb));{}
Proverka operator + (const proverka &);
};
Proverka proverka::operator +(const proverka &zaval)
{proverka marazm(0,0);
Marazm.a=a+zaval.a;
Marazm.b=b+zaval.b;
Return marazm;
}
Void main ()
{proverka q(10,10);
Proverka w(6,6);
Proverka summa(0,0);
Summa=q+w;
}