Программирование на языке высокого уровня. Марапулец Ю.В. - 89 стр.

UptoLike

Составители: 

§ 3.2. Конструкторы и деструкторы
В C++ существуют специальные функции-члены класса, которые определяют как
объекты класса создаются, инициализируются, копируются и уничтожаются. Важней-
шие из них - конструкторы и деструкторы. Им свойственны многие черты методов, но
существуют и свои особенности:
конструкторы и деструкторы не могут описываться как функции, возвращающие
значение (даже как void);
конструкторы и деструкторы не наследуются (механизм наследования далее будет
подробно рассмотрен). Однако из порождаемого класса можно вызывать конструк-
торы и деструкторы базового класса;
конструкторы, подобно большинству функций языка C++ могут иметь аргументы. В
качестве параметров могут быть элементы, получающие значения по умолчанию;
деструкторы могут быть виртуальными (далее виртуальные функции будут подробно
рассмотрены), конструкторы - нет;
имя конструктора совпадает с именем класса. Имя деструктора - имя класса, которо-
му предшествует символ ~;
нельзя получить адрес конструктора или деструктора;
если они явно не описаны, то конструкторы и деструкторы автоматически создаются
компилятором. Тип доступа для создаваемых функций - public.
транслятор автоматически вставляет вызовы конструктора и деструктора при описа-
нии и уничтожении объекта;
конструкторы и деструкторы могут использовать операторы new и delete;
Имя
конструктора совпадает с именем класса. Конструктор вызывается при соз-
дании или копировании объектов класса. Конструкторы для глобальных переменных
вызываются до исполнения стартовой функции программы. Конструктор класса Х не
может иметь Х в качестве аргумента. В качестве параметра конструктор может иметь
ссылку на свой собственный класс. Конструктор, который не имеет параметров, называ-
ется конструктором по умолчанию.
Если класс Х имеет один или более конструктор, то любой из них может быть ис-
пользован для определения объекта х класса X. Конструктор создает объект х и инициа-
лизирует его. Деструктор выполняет обратные действия. Кроме того, конструктор ис-
пользуется когда создается локальный или временный объект класса, деструктор - когда
этот объект удаляется из памяти.
По умолчанию конструктор для класса Х есть одна функция без параметров Х::Х().
Подобно всем функциям конструкторы могут иметь значения аргументов по умолчанию.
Например, конструктор X
::X(int, int=0) может иметь один или два аргумента. В частно-
сти, конструктор по умолчанию Х
::Х() можно представлять как X::X(int=0). В этой свя-
зи возможна, например, следующая неоднозначность:
class Х
{
public:
X();
X(int i=0);
}
void main ()
{
X one(10); // допустимо, используется X
::X(int)
X two; // недопустимо. Не ясно Х
::Х() или X::X(int=0)
}
89
     § 3.2. Конструкторы и деструкторы

      В C++ существуют специальные функции-члены класса, которые определяют как
объекты класса создаются, инициализируются, копируются и уничтожаются. Важней-
шие из них - конструкторы и деструкторы. Им свойственны многие черты методов, но
существуют и свои особенности:
• конструкторы и деструкторы не могут описываться как функции, возвращающие
    значение (даже как void);
• конструкторы и деструкторы не наследуются (механизм наследования далее будет
    подробно рассмотрен). Однако из порождаемого класса можно вызывать конструк-
    торы и деструкторы базового класса;
• конструкторы, подобно большинству функций языка C++ могут иметь аргументы. В
    качестве параметров могут быть элементы, получающие значения по умолчанию;
• деструкторы могут быть виртуальными (далее виртуальные функции будут подробно
    рассмотрены), конструкторы - нет;
• имя конструктора совпадает с именем класса. Имя деструктора - имя класса, которо-
    му предшествует символ ~;
• нельзя получить адрес конструктора или деструктора;
• если они явно не описаны, то конструкторы и деструкторы автоматически создаются
    компилятором. Тип доступа для создаваемых функций - public.
• транслятор автоматически вставляет вызовы конструктора и деструктора при описа-
    нии и уничтожении объекта;
• конструкторы и деструкторы могут использовать операторы new и delete;
      Имя конструктора совпадает с именем класса. Конструктор вызывается при соз-
дании или копировании объектов класса. Конструкторы для глобальных переменных
вызываются до исполнения стартовой функции программы. Конструктор класса Х не
может иметь Х в качестве аргумента. В качестве параметра конструктор может иметь
ссылку на свой собственный класс. Конструктор, который не имеет параметров, называ-
ется конструктором по умолчанию.
      Если класс Х имеет один или более конструктор, то любой из них может быть ис-
пользован для определения объекта х класса X. Конструктор создает объект х и инициа-
лизирует его. Деструктор выполняет обратные действия. Кроме того, конструктор ис-
пользуется когда создается локальный или временный объект класса, деструктор - когда
этот объект удаляется из памяти.
      По умолчанию конструктор для класса Х есть одна функция без параметров Х::Х().
Подобно всем функциям конструкторы могут иметь значения аргументов по умолчанию.
Например, конструктор X::X(int, int=0) может иметь один или два аргумента. В частно-
сти, конструктор по умолчанию Х::Х() можно представлять как X::X(int=0). В этой свя-
зи возможна, например, следующая неоднозначность:

class Х
{
      public:
        X();
        X(int i=0);
}
void main ()
{
      X one(10); // допустимо, используется X::X(int)
      X two; // недопустимо. Не ясно Х::Х() или X::X(int=0)
}


                                          89