Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Ответы к информатике.doc
Скачиваний:
9
Добавлен:
26.09.2019
Размер:
356.86 Кб
Скачать
  1. Дружественные функции класса.

Дружественные функции Дружественные функции – это функции, объявленные вне класса, но имеющие доступ к закрытым и защищенным полям данного класса Дружественная функция объявляется внутри класса с модификатором friend Дружественные функции не являются членами класса, поэтому им не передается указатель this Правило использования: Если нет важных доводов использовать дружественные функции – используйте вместо них члены класса Если важные доводы есть – подумайте, а действительно ли они так важны

  1. Определение конструктора. Форматы вызова конструктора. Перегрузка конструкторов.

В объектно-ориентированном программировании конструктор класса (от англ. constructor, иногда сокращают ctor) — специальный блок инструкций, вызываемый при создании объекта.

Конструктор схож с методом, но отличается от метода тем, что не имеет явным образом определённого типа возвращаемых данных, не наследуется, и обычно имеет различные правила для рассматриваемых модификаторов. Конструкторы часто выделяются наличием одинакового имени с именем класса, в котором объявляется. Их задача — инициализировать члены объекта и определить инварианткласса, сообщив в случае некорректности инварианта. Корректно написанный конструктор оставит объект в «правильном» состоянии.Неизменяемые объекты тоже должны быть проинициализированы конструктором.

Термин «конструктор» также используется для обозначения одного из тегов, описывающих данные в алгебраическом типе данных. Это использование несколько отличается от описываемого в статье. Для дополнительной информации смотрите Алгебраический тип данных.

В большинстве языков конструктор может быть перегружен, что позволяет использовать несколько конструкторов в одном классе, причём каждый конструктор может иметь различные параметры.

дна из ключевых особенностей ООП — инкапсуляция: внутренние поля объекта напрямую недоступны, и пользователь может работать с объектом только как с единым целым, через открытые (public) методы. Каждый метод, в идеале, должен быть устроен так, чтобы объект, находящийся в «допустимом» состоянии (то есть когда выполняется инвариант класса), после вызова метода также оказался в допустимом состоянии. И первая задача конструктора — перевести поля объекта в такое состояние.

Вторая задача — упростить пользование объектом. Объект — не «вещь в себе», ему часто приходится требовать какую-то информацию от других объектов: например, объект File, создаваясь, должен получить имя файла. Это можно сделать и через метод:

File file;

file.open("in.txt", File::omRead);

Но удобнее открытие файла сделать в конструкторе:[1]

File file("in.txt", File::omRead);

[править]Виды конструкторов

Некоторые языки программирования различают несколько особых типов конструкторов:

  • конструктор по умолчанию — конструктор, не принимающий аргументов;

  • конструктор копирования — конструктор, принимающий в качестве аргумента объект того же класса (или ссылку из него);

  • конструктор преобразования — конструктор, принимающий один аргумент (эти конструкторы могут вызываться автоматически для преобразования значений других типов в объекты данного класса).

Деструктор

  • #include <iostream>

  • using namespace std;

  • class NameOfClass

  • {

  • private:

  • int a;

  • public:

  • NameOfClass(int m);

  • ~NameOfClass();

  • };

  • NameOfClass::~NameOfClass()

  • {

  • cout << this->a << endl;

  • }

  • NameOfClass::NameOfClass(int m)

  • {

  • a = m;

  • }

Дестру́ктор — специальный метод класса, служащий для деинициализации объекта (например освобождения памяти).