АвтоАвтоматизацияАрхитектураАстрономияАудитБиологияБухгалтерияВоенное делоГенетикаГеографияГеологияГосударствоДомДругоеЖурналистика и СМИИзобретательствоИностранные языкиИнформатикаИскусствоИсторияКомпьютерыКулинарияКультураЛексикологияЛитератураЛогикаМаркетингМатематикаМашиностроениеМедицинаМенеджментМеталлы и СваркаМеханикаМузыкаНаселениеОбразованиеОхрана безопасности жизниОхрана ТрудаПедагогикаПолитикаПравоПриборостроениеПрограммированиеПроизводствоПромышленностьПсихологияРадиоРегилияСвязьСоциологияСпортСтандартизацияСтроительствоТехнологииТорговляТуризмФизикаФизиологияФилософияФинансыХимияХозяйствоЦеннообразованиеЧерчениеЭкологияЭконометрикаЭкономикаЭлектроникаЮриспунденкция

Конструкторы и деструкторы. Автоматическая инициализация. Список инициализации элементов

Читайте также:
  1. Cкоростная автоматическая обработка
  2. IV. Список мифологических имен,
  3. Абстрактные классы и чистые виртуальные функции. Виртуальные деструкторы. Дружественные функции. Дружественные классы.
  4. Автоматическая блокировка защиты
  5. Автоматическая дуговая сварка под слоем флюса
  6. Автоматическая замена шрифта
  7. АВТОМАТИЧЕСКАЯ НУМЕРАЦИЯ СТРАНИЦ
  8. Автоматическая ротация в коленном суставе
  9. Алгоритм вставки элемента в список после элемента с указанным ключом
  10. Библиографический список
  11. БИБЛИОГРАФИЧЕСКИЙ СПИСОК
  12. Библиографический список

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

У конструкторов есть несколько особенностей, отличающих их от других методов класса. Во-первых, имя конструктора в точности совпадает с именем класса. Таким образом, компилятор отличает конструкторы от других методов класса. Во-вторых, у конструкторов не существует возвращаемого значения. Это объясняется тем, что конструктор автоматически вызывается системой, и, следовательно, не существует вызывающей программы или функции, которой конструктор мог бы возвратить значение. Следовательно, указание возвращаемого значения для конструктора не имеет смысла.

Отсутствие типа возвращаемого значения у конструкторов является вторым признаком, по которому компилятор может отличить их от других методов класса.

Если в программе создается множество таких переменных, гораздо проще и надежнее было бы инициализировать их автоматически при создании. В программе конструктор может выполнить эти действия. Конструктор вызывается автоматически при создании каждого из объектов класса.

Одной из наиболее часто возлагаемых на конструктор задач является инициализация полей объекта класса.

Инициализация происходит следующим образом:

Counter(): count(0)

{ }

Инициализация расположена между прототипом метода и телом функции и предварена двоеточием. Инициализирующее значение помещено в скобках после имени поля.

Если необходимо инициализировать сразу несколько полей класса, то значения разделяются запятыми, и в результате образуется список инициализации:

SomeClass(): m1(7), m2(33), m3(4)

{ }

Причины, по которым инициализация не проводится в теле конструктора, достаточно сложны. Инициализация полей с помощью списка инициализации происходит до начала исполнения тела конструктора, что в некоторых ситуациях бывает важно. Так, например, список инициализации — это единственный способ задать начальные значения констант и ссылок. В теле конструктора, как правило, производятся более сложные действия, чем обычная инициализация.

 

Существует другая функция, автоматически вызываемая при уничтожении объекта и называемая деструктором. Деструктор имеет имя, совпадающее с именем конструктора и предваряющееся символом ~. Подобно конструкторам, деструкторы не возвращают значения и не имеют аргументов, поскольку невозможно уничтожение объектов несколькими способами. Наиболее распространенное применение деструкторов — освобождение памяти, выделенной конструктором при создании объекта.

 


1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | 47 | 48 | 49 | 50 | 51 | 52 | 53 | 54 |

Поиск по сайту:



Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Студалл.Орг (0.002 сек.)