Конструктор – метод класса, который а в т о м а т и ч е с к и вызывается при выделении памяти под объект.
По правилам С++ конструктор имеет то же имя, что и класс, не наследуется в производных классах, может иметь аргументы, но не возвращает значения, может быть параметрически перегружен. Конструктор определяет операции, которые необходимо выполнить при создании объекта. Традиционно такими операциями являются инициализация полей класса и выделение памяти под динамические поля, если такие в классе объявлены. Явный вызов конструктора не возможен, что в некоторых случаях усложняет создание инициализированных объектов.
При освобождении объектом памяти автоматически вызывается другой специальный метод класса – деструктор. Имя деструктора по аналогии с именем конструктора, совпадает с именем класса, но перед ним стоит символ «~» («тильда»). Деструктор определяет операции, которые необходимо выполнить при уничтожении объекта. Обычно он используется для освобождения памяти, выделенной под динамические поля объекта данного класса конструктором, и при необходимости может быть объявлен виртуальным.
Деструктор не возвращает значения, не имеет параметров и не наследуется производными
классами. Класс может иметь только один деструктор или не иметь ни одного. В отличие от конструктора деструктор может вызываться явно. Момент уничтожения объекта, а, следовательно, и автоматического вызова деструктора определяется типом памяти, выбранным для размещения объекта: локальная,
глобальная, внешняя и т. д. Если программа завершается с использованием функции exit, то вызываются деструкторы только глобальных объектов. При аварийном завершении программы, использующей объекты некоторого класса, функцией abort деструкторы объектов не вызываются.
public class A
{static A()
{Console.WriteLine("Статический конструктор класса А");}
public A()
{Console.WriteLine("Обычный конструктор класса А");}
~A()
{Console.WriteLine("Деструктор класса А");}}