- •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 позиций, с прижатием соответственно влево и вправо).
13. Инициализация объектов классов. Назначение, типы конструкторов.
Описание объекта задает тип (имя класса) и, возможно, необходимые для инициализации членов-данных значения. При объявлении объекта компилятор получает указание на создание переменной класса на основании заданного типа. Когда объект объявляется, то согласно описанию класса для объекта происходит выделение оперативной памяти, а также при указании значений данных осуществляется инициализация членов-данных указанными значениями. Всю эту работу делает специальный метод класса, называемый конструктором.
имя_класса имя_объекта ;
имя_класса имя_объекта(список параметров) ;
имя_класса имя_объекта(имя_объекта_копирования) ;
У конструктора имя класса и обязательно открытый спецификатор памяти. Конструктор управляет построением объекта в оперативной памяти. Процесс построения включает в себя выделение памяти для членов-данных типа указателей, а также инициализацию данных. Конструктор никогда не возвращает никакого значения и не имеет типа. Количество конструкторов не ограничено
14. Инициализация объектов классов. Описание конструкторов.
Главной задачей конструкторов класса является инициализация данных создаваемых им объектов. Однако производить инициализацию данных при помощи оператора присваивания в теле конструктора не рекомендуется. инициализация – присвоение объекту начального значения.
Конструктор по умолчанию.
Конструктор по умолчанию – конструктор, не требующий параметров. Этот конструктор всегда должен быть для любого класса. Конструктор по умолчанию может не выполнять никаких действий, но чаще всего он инициализирует данные класса нулевыми значениями.
Объявление: public: имя_класса();
Пример:
CBook::CBook () {m_name=””;m_ page=0;}
Конструктор с параметрами:
Конструктор с параметрами инициализирует значения данных объектов значениями полученных параметров. Параметров будет столько, сколько данных необходимо проинициализировать. Прототип такого конструктора имеет формат: public: имя_класса (список формальных параметров);
Пример:
СBook:: CBook (char *autor, int page )
{ strcpy(m_autor, autor);
m_page=page;
}
Конструктор копирования:
Конструктор копирования создает копию объекта в оперативной памяти с помощью другого объекта того же класса. В качестве параметра этот конструктор получает ссылку на объект, копию которого необходимо создать. Протип: public: имя_класса (имя_класса);
Пример:СBook:: CBook(CBook &obj)
{ strcpy(m_autor, obj.m_autor);
m_page=obj.m_page;}
15. Особенности описания и использования конструкторов копирования.
Конструктор копирования создает копию объекта в оперативной памяти с помощью другого объекта того же класса. В качестве параметра этот конструктор получает ссылку на объект, копию которого необходимо создать. Протип: public: имя_класса (имя_класса);
Пример:
СBook:: CBook(CBook &obj)
{ strcpy(m_autor, obj.m_autor);
m_page=obj.m_page;
}
Конструктор копирования необходим, если в классе есть члены, которые используют динамическую область памяти. Есть данные которые не хранятся в области класса. Если не описан конструктор копирования, то система как бы сама генерирует такой конструктор. Такой конструктор выполняет побитовое копирование.
Есть ряд ситуаций, когда такое поразрядное копирование приводит к ошибкам:
При создании нового объекта инициализированного уже имеющимся.
Передача в функцию объекта класса по значению – создается копия передаваемого аргумента, если это объект, то по завершении функции автоматически вызовется деструктор. При этом деструктор может удалить данные в динамической области, которые необходимы для исходного объекта.
Связана с вызовом функций. Вызываемая функция возвращает объект по значению. При возврате в return результата автоматически генерируется временный объект для хранения возвращающего значения, а сам объект удаляется после завершения работы функции – автоматически вызывается деструктор – уничтожение данных необходимо объекту, которому присваивается значение вызываемой функции.
Когда 2 объекта данного класса участвуют в операторе присваивания.