- •2.Операторы new, delete.
- •4. Перегрузка функций.
- •5. Ссылки. Назначение и особенности использования.
- •10. Классы и объекты. Члены классов. Атрибуты доступа.
- •11. Описание классов. Видимость и доступ к членам классов.
- •12. Функции-члены классов. Описание, вызов.
- •13. Инициализация объектов классов. Назначение, типы конструкторов.
- •14. Инициализация объектов классов. Описание конструкторов.
- •15. Особенности описания и использования конструкторов копирования.
- •16. Деструкторы. Назначение, описание, использование.
- •17. Пример описания конструктора копирования для класса со структурными членами-данными (массива).
- •24. Пример использования функции-друга.
- •25. Перегрузка операторов. Назначение, правила, способы.
- •26. Перегрузка операторов с использованием операторных-функций. Указатель this.
- •27. Перегрузка операторов с использованием дружественных функций.
- •28. Поразрядное копирование. Особенности перегрузки оператора присваивания.
- •29. Перегрузка операторов отношений. Примеры.
- •30. Перегрузка логических операторов. Примеры.
- •31. Перегрузка арифметических операторов. Примеры.
- •33. Перегрузка оператора ”[ ]” для класса со структурными членами-данными (массива).
- •37. Наследование. Конструкторы и деструкторы.
- •38. Наследование. Видимость и доступ к членам базовых и производных классов.
- •39. Статический (перегрузка операторов, функций, функций-членов, конструкторов) полиморфизм.
- •40. Пример описания класса на базе одиночного наследования.
- •41. Функции-шаблоны. Назначение, описание, использование.
- •42. Пример описания и вызова функции-шаблон для суммирования элементов массива.
- •45. Характеристика пространства имен.
- •46. Описание и использование пространства имен (на примере).
- •47. Понятие исключительная ситуация и способы обработки исключений.
- •50. 51.Синтаксис и использование команды try, catch. Варианты использования catch. Генерация исключений командой throw.
- •52. Варианты генерации и обработки исключений.
- •Istream iostrim ostream
- •Ifstream fstream ofstream
- •64. Пример создания и заполнения файла.
- •65. Пример открытия и чтения содержимого файла.
- •66. Пример заполнения файла записями (значение-значение, размещенными в полях 20 и 30 позиций, с прижатием соответственно влево и вправо).
24. Пример использования функции-друга.
#include <string.h>
#include <stdio.h>
#include <iostream.h>
//класс неарифметического типа
class COffice
{
private:
char m_namedok[30];
int m_date[3];
int m_kode;
public: COffice(); COffice(char*name, int*date, int);
COffice ( const COffice&); friend ostream& operator<< (ostream& str, COffice p friend void TO_SHOW( COffice obj);
};
void TO_SHOW (COffice obj)
{
cout<<'\n'<<obj.m_namedok<< \n'<<obj.m_date[0]<<'.'<<obj.m_date[1]<<'.'<<obj.m_date[2]<<'\n'<<obj.m_kode<< endl;
}
ostream& operator<< (ostream& str, COffice p)
{
return (str<<p.getNamedok()<<'\n' << p.getDate()<< '\n'<<p.getKode()<< '\n'<< endl);
}
main ()
{
COffice x1(…)
TO_SHOW(x1);
cout<<x1;}
25. Перегрузка операторов. Назначение, правила, способы.
Придание стандартному оператору новой семантики (смысла).
Перегрузка операторов предоставляет возможность переопределить практически любой стандартный оператор С++ относительно типа данных class (класс). Запрещается перегружать (. , .* , :: , sizeof, #)
Когда оператор перегружается, его стандартное предназначение для типов данных, отличных от типа class, сохраняется. в тоже время оператор приобретает дополнительный смысл, связанный с тем классом, для которого он определен. Перегрузка операторов расширяет набор типов для которых он может применяться.
Правила:
- нельзя создавать новый знак оператора, можно использовать лишь существующие.
- невозможно изменить приоритет
- нельзя изменить количество операндов в операторе.
- оператор присваивания «=», не наследуется, перегружается только при помощи методов класса.
Перегружать операторы можно при операторных функций, функциями-членами и членами-друзьями.
Объявление:
Через метод!!
Для унарных:
тип_функции имя_класса :: operator знак_оператора ()
{}
Для бинарных:
тип_функции имя_класса :: operator знак_оператора (описание_параметра)
{}
Через функцию- друг!!!!
тип_функции имя_класса :: operator знак_оператора (описание_параметра)
{}
Для бинарных:
тип_функции имя_класса :: operator знак_оператора (параметра_1, параметр_2)
{}
26. Перегрузка операторов с использованием операторных-функций. Указатель this.
Для унарных:
тип_функции имя_класса :: operator знак_оператора ()
{}
Для бинарных:
тип_функции имя_класса :: operator знак_оператора (описание_параметра)
{}
this – указатель, представляет собой неявно определенный указатель на сам объект и является скрытой внутренней переменной класса. this – это адрес активного объекта в оперативной памяти. *this – сам активный объект.
Абсолютно каждый объект имеет свой собственный указатель this. Этот указатель нужно объявлять в классе, он объявлен неявно. Указатель изменить нельзя. При работе с другом указатель this не передается.
27. Перегрузка операторов с использованием дружественных функций.
тип_функции имя_класса :: operator знак_оператора (описание_параметра)
{}
Для бинарных:
тип_функции имя_класса :: operator знак_оператора (параметра_1, параметр_2)
{}
С помощью функции-друг можно перегрузит любые сочетания операторов (кроме = и [ ] ). при работе с другом указатель this не передается.